資源簡介
使用STM32F405的SPI通信接口對ADS1292R進行寄存器配置的參考代碼源文件。

代碼片段和文件信息
#include?“ads1292r.h“
#include?“stm32f4xx_hal_spi.h“
#include?
#include?“string.h“
#include?“spi.h“
//?active?LOW
void?ads_Reset(uint8_t?reset)
{
if(reset)
HAL_GPIO_WritePin(ADS_RESET_GPIO_Port?ADS_RESET_Pin?GPIO_PIN_SET);
else
HAL_GPIO_WritePin(ADS_RESET_GPIO_Port?ADS_RESET_Pin?GPIO_PIN_RESET);
}
//?active?LOW
void?ads_CS(uint8_t?cs)
{
if(cs)
HAL_GPIO_WritePin(ADS_CS_GPIO_Port?ADS_CS_Pin?GPIO_PIN_SET);
else
HAL_GPIO_WritePin(ADS_CS_GPIO_Port?ADS_CS_Pin?GPIO_PIN_RESET);
}
//?active?HIGH
void?ads_Start(uint8_t?start)
{
if(start)
HAL_GPIO_WritePin(ADS_START_GPIO_Port?ADS_START_Pin?GPIO_PIN_SET);
else
HAL_GPIO_WritePin(ADS_START_GPIO_Port?ADS_START_Pin?GPIO_PIN_RESET);
}
uint8_t??ads_Read_ID(void)
{
??uint8_t?send_data[3]?read_data[3];
send_data[0]?=?ADS1292R_CMD_RREG_1(ADS1292R_REG_ID);
send_data[1]?=?ADS1292R_CMD_RREG_2(1);
send_data[2]?=?0x00;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
return?read_data[2];
}
void?ads_Init(void)
{
uint8_t?send_data[20]?read_data[20];
ads_Reset(1); // 復位引腳置一,正常工作
osDelay(1000);
// ads_CS(0);
osDelay(100);
//指令:停止連續讀數據模式
send_data[0]=ADS1292R_CMD_SDATAC;??
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data11000));
osDelay(10);
//寫配置寄存器2=0xa0,內部參考電壓為2.42V
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_CONFIG2);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0xa0;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
osDelay(10);
//寫配置寄存器1=0x01,連續轉換模式,采樣率為250
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_CONFIG1);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0x01;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
osDelay(10);
//寫導聯脫落檢測寄存器=0xF0,正負極分別為70%和30%,該功能實際未使用
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_LOFF);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0xF0;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
osDelay(10);
//寫通道1設置寄存器=0x30,設置增益為3,正常節點輸入
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_CH1SET);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0x30;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
osDelay(10);
//寫右腿驅動寄存器=0xEF,PGA的斬波頻率為4分頻,使能右腿驅動,關閉右腿驅動的脫落檢測,通道2的右腿驅動負極和正極分別連接到通道2輸入的負極和正極,通道1的右腿驅動負極和正極分別連接到通道1的負極和正極
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_RLD_SENS);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0xEF;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1send_dataread_data31000));
osDelay(10);
//寫脫落檢測寄存器=0x0F,關閉通道1和2的電流方向檢測,使能通道1和2的正負極脫落檢測
//其實只使用了通道1,而且脫落檢測實際上沒有使用
send_data[0]?=?ADS1292R_CMD_WREG_1(ADS1292R_REG_LOFF_SENS);
send_data[1]?=?ADS1292R_CMD_WREG_2(1);
send_data[2]?=?0x0F;
while(HAL_OK!=?HAL_SPI_TransmitReceive(&hspi1sen
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-15?03:15??ADS1292R配置源文件\
?????文件????????4288??2019-01-15?03:14??ADS1292R配置源文件\ads1292r.c
?????文件????????1267??2019-01-15?01:54??ADS1292R配置源文件\ads1292r.h
評論
共有 條評論