ADS1292R模塊的電路圖
ADS1292R芯片手冊:
STM32源代碼- //-----------------------------------------------------------------
- // 程序描述:
- // ADS1292驅動程序
- // 作 者: 凌智電子
- // 開始日期: 2020-09-01
- // 完成日期: 2020-09-05
- // 修改日期:
- // 當前版本: V1.0
- // 歷史版本:
- // - V1.0: ADS1292驅動
- // 調試工具: 凌智STM32F429+CycloneIV電子系統設計開發板、LZE_ST_LINK2
- // 說 明:
- //
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
- // 頭文件包含
- //-----------------------------------------------------------------
- #include "ads1292.h"
- #include "spi.h"
- #include "delay.h"
- //-----------------------------------------------------------------
- //-----------------------------------------------------------------
- // void ADS1292_Init(void)
- //-----------------------------------------------------------------
- //
- // 函數功能: ADS1292初始化
- // 入口參數: 無
- // 返 回 值: 無
- // 注意事項: 無
- //
- //-----------------------------------------------------------------
- void ADS1292_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- __HAL_RCC_GPIOE_CLK_ENABLE();
- // ADS1292_DRDY -> PE9
- GPIO_InitStruct.Pin = GPIO_PIN_9; // 配置ADS1292_DRDY
- GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 輸入
- GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 高速
- HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); // 初始化
- // ADS1292_START -> PE7
- // ADS1292_PWDN -> PE8
- // ADS1292_CS -> PE10
- // ADS1292_GPIO1 -> PE11
- // ADS1292_GPIO2 -> PE12
- GPIO_InitStruct.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_10 |
- GPIO_PIN_11 | GPIO_PIN_12;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽輸出
- GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉
- GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 高速
- HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); // 初始化
- SPI5_Init(); // SPI初始化
- }
- //-----------------------------------------------------------------
- // void ADS1292_PowerOnInit(void)
- //-----------------------------------------------------------------
- //
- // 函數功能: ADS1292上電復位
- // 入口參數: 無
- // 返 回 值: 無
- // 注意事項: 無
- //
- //-----------------------------------------------------------------
- void ADS1292_PowerOnInit(void)
- {
- u8 device_id;
- ADS1292_START = 1;
- ADS1292_CS = 1;
- ADS1292_PWDN = 0; // 進入掉電模式
- delay_ms(1000);
- ADS1292_PWDN = 1; // 退出掉電模式
- delay_ms(1000); // 等待穩定
- ADS1292_PWDN = 0; // 發出復位脈沖
- delay_us(10);
- ADS1292_PWDN = 1;
- delay_ms(1000); // 等待穩定,可以開始使用ADS1292R
-
- ADS1292_START = 0;
- ADS1292_CS = 0;
- SPI5_Send_Byte(SDATAC); // 發送停止連續讀取數據命令
- delay_us(10);
- ADS1292_CS = 1;
-
- // 獲取芯片ID
- device_id = ADS1292_Read_Reg(RREG | ID);
- while(device_id != 0x73)
- {
- printf("ERROR ID:%02x\r\n",device_id);
- device_id = ADS1292_Read_Reg(RREG | ID);
- HAL_Delay(1000);
- }
-
- delay_us(10);
- ADS1292_Write_Reg(WREG | CONFIG2, 0XE0); // 使用內部參考電壓
- delay_ms(10); // 等待內部參考電壓穩定
- ADS1292_Write_Reg(WREG | CONFIG1, 0X03); // 設置轉換速率為1KSPS
- delay_us(10);
- ADS1292_Write_Reg(WREG | LOFF, 0XF0); // 該寄存器配置引出檢測操作
- delay_us(10);
- ADS1292_Write_Reg(WREG | CH1SET, 0X00); // 增益6,連接到電極
- delay_us(10);
- ADS1292_Write_Reg(WREG | CH2SET, 0X00); // 增益6,連接到電極
- delay_us(10);
- ADS1292_Write_Reg(WREG | RLD_SENS, 0xEF);
- delay_us(10);
- ADS1292_Write_Reg(WREG | LOFF_SENS,0x0F);
- delay_us(10);
- ADS1292_Write_Reg(WREG | LOFF_STAT,0x00);
- delay_us(10);
- ADS1292_Write_Reg(WREG | RESP1, 0xEA); // 開啟呼吸檢測(ADS1292R特有)
- delay_us(10);
- ADS1292_Write_Reg(WREG | RESP2, 0x03);
- delay_us(10);
- ADS1292_Write_Reg(WREG | GPIO, 0x0C);
- delay_us(10);
- }
- //-----------------------------------------------------------------
- // void ADS1292_Write_Reg(u8 com, u8 data)
- //-----------------------------------------------------------------
- //
- // 函數功能: 對ADS1292的內部寄存器進行寫操作
- // 入口參數: 無
- // 返 回 值: 無
- // 注意事項: 無
- //
- //-----------------------------------------------------------------
- void ADS1292_Write_Reg(u8 addr, u8 data)
- {
- ADS1292_CS = 0; // 片選拉低
- SPI5_Send_Byte(addr); // 包含命令操作碼和寄存器地址
- delay_us(10);
- SPI5_Send_Byte(0x00); // 要讀取的寄存器數+1
- delay_us(10);
- SPI5_Send_Byte(data); // 寫入的數據
- delay_us(10);
- ADS1292_CS = 1; // 片選置高
- }
- //-----------------------------------------------------------------
- // u8 ADS1292_Read_Reg(u8 addr)
- //-----------------------------------------------------------------
- //
- // 函數功能: 對ADS1292的內部寄存器進行讀操作
- // 入口參數: 無
- // 返 回 值: 無
- // 注意事項: 無
- //
- //-----------------------------------------------------------------
- u8 ADS1292_Read_Reg(u8 addr)
- {
- u8 Rxdata;
- ADS1292_CS = 0;
- SPI5_Send_Byte(addr); // 包含命令操作碼和寄存器地址
- delay_us(10);
- SPI5_Send_Byte(0x00); // 要讀取的寄存器數+1
- delay_us(10);
- Rxdata = SPI5_Read_Byte(); // 讀取的數據
- delay_us(10);
- ADS1292_CS = 1;
- return Rxdata;
- }
- //-----------------------------------------------------------------
- // u8 ADS1292_Read_Data(u8 addr)
- //-----------------------------------------------------------------
- //
- // 函數功能: 讀取ADS1292的數據
- // 入口參數: 無
- // 返 回 值: 無
- // 注意事項: 無
- //
- //-----------------------------------------------------------------
- void ADS1292_Read_Data(u8 *data)
- {
- u8 i;
- ADS1292_CS = 0;
- SPI5_Send_Byte(RDATAC); // 發送啟動連續讀取數據命令
- delay_us(10);
- ADS1292_CS = 1;
- ADS1292_START = 1; // 啟動轉換
- while (HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_9) == 1); // 等待DRDY信號拉低
- ADS1292_CS = 0;
- for (i = 0; i < 9; i++) // 連續讀取9個數據
- {
- *data = SPI5_Read_Byte();
- data++;
- }
- ADS1292_START = 0; // 停止轉換
- SPI5_Send_Byte(SDATAC); // 發送停止連續讀取數據命令
- delay_us(10);
- ADS1292_CS = 1;
- }
- //-----------------------------------------------------------------
- // End Of File
- //-----------------------------------------------------------------
復制代碼 Keil代碼下載:
測試程序.7z
(715.91 KB, 下載次數: 147)
2020-11-1 17:00 上傳
點擊文件名下載附件
pdf格式的原理圖:
原理圖PDF.zip
(189.04 KB, 下載次數: 130)
2020-10-31 23:17 上傳
點擊文件名下載附件
英文芯片手冊:
芯片手冊.zip
(2.56 MB, 下載次數: 84)
2020-10-31 23:17 上傳
點擊文件名下載附件
|