- #include "ADS1220.h"
- void ADS1220SendByte(u8 Byte)
- {
- //HAL_SPI_Transmit(&hspi1,&Byte,1,10);
- SPI2_ReadWriteByte(Byte);
- }
- unsigned char ADS1220ReceiveByte()
- {
- unsigned char SData = 0xff ,Result = 0;
- Result = SPI2_ReadWriteByte(SData);
- //HAL_SPI_TransmitReceive(&hspi1,&SData,&Result,1,10);
- return Result;
- }
- /*
- ******************************************************************************
- higher level functions
- */
- void ADS1220ReadRegister(int StartAddress, int NumRegs, unsigned * pData)
- {
- int i;
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_RREG | (((StartAddress<<2) & 0x0c) |((NumRegs-1)&0x03)));
- /* get the register content */
- for (i=0; i< NumRegs; i++)
- {
- *pData++ = ADS1220ReceiveByte();
- }
- return;
- }
- void ADS1220WriteRegister(int StartAddress, int NumRegs, unsigned char * pData)
- {
- int i;
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_WREG | (((StartAddress<<2) & 0x0c) |((NumRegs-1)&0x03)));
- /* send the data bytes */
- for (i=0; i< NumRegs; i++)
- {
- ADS1220SendByte(*pData++);
- }
- return;
- }
- void ADS1220SendResetCommand()
- {
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_RESET);
- return;
- }
- void ADS1220SendStartCommand()
- {
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_SYNC);
- return;
- }
- void ADS1220SendShutdownCommand()
- {
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_SHUTDOWN);
- return;
- }
- /* ADS1220 Initial Configuration */
- unsigned int test[4];
- void ADS1220Init(void)
- {
-
- uint8_t ch_cfg[4]={ADS1220_MUX_3_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS, ADS1220_CC|ADS1220_DR_45, ADS1220_VREF_SUPPLY|ADS1220_PSW_SW_OFF, ADS1220_IDAC1_OFF|ADS1220_IDAC2_OFF};
- ADS1220SendResetCommand();//復位
- delay_ms(100);
- ADS1220WriteRegister(ADS1220_0_REGISTER,4,ch_cfg);//配置4個寄存器
- delay_ms(100);
-
- //ADS1220SendShutdownCommand();
- ADS1220SendStartCommand();
- }
- long ADS1220ReadData()
- {
- long Data;
- /* send the command byte */
- ADS1220SendByte(ADS1220_CMD_RDATA);
- /* get the conversion result */
- #ifdef ADS1120
- Data = ADS1220ReceiveByte();
- Data = (Data << 8) | ADS1220ReceiveByte();
- /* sign extend data */
- if (Data & 0x8000)
- Data |= 0xffff0000;
- #else
- Data = ADS1220ReceiveByte();
- Data = (Data << 8) | ADS1220ReceiveByte();
- Data = (Data << 8) | ADS1220ReceiveByte();
- /* sign extend data */
- if (Data & 0x800000)
- Data |= 0xff000000;
- #endif
- return Data;
- }
- //選擇通道函數
- void ADS1220_SelCh(uint8_t ch)
- {
- uint8_t cfg[2]={ADS1220_MUX_0_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS};
-
- switch(ch)
- {
- case 0://選擇通道0
- cfg[0] = ADS1220_MUX_0_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS;
- ADS1220WriteRegister(ADS1220_0_REGISTER,1,cfg);
- break;
- case 1://選擇通道1
- cfg[0] = ADS1220_MUX_1_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS;
- ADS1220WriteRegister(ADS1220_0_REGISTER,1,cfg);
- break;
- case 2://選擇通道2
- cfg[0] = ADS1220_MUX_2_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS;
- ADS1220WriteRegister(ADS1220_0_REGISTER,1,cfg);
- break;
- case 3://選擇通道3
- cfg[0] = ADS1220_MUX_3_G|ADS1220_GAIN_1|ADS1220_PGA_BYPASS;
- ADS1220WriteRegister(ADS1220_0_REGISTER,1,cfg);
- break;
- }
- }
- __IO uint16_t ADS1220_Tick = 0;
- uint32_t temp,data;
- float Vin[4];
- //循環讀取4個通道
- u32 ADS1220_GetData(void)
- {
- static uint8_t ads_ch = 3;//通道選擇
-
- //if(ADS1220_Tick<50)return;
- //ADS1220_Tick=0;
- delay_ms(100);
- //ADS1220ReadRegister(ADS1220_0_REGISTER,4,test);
- switch(ads_ch)
- {
- case 0://讀取通道0 然后切換到通道1
- temp = ADS1220ReadData();
- Vin[0] = temp*2.048f/8388608;//轉換為電壓 單位V
- ads_ch = 1;
- ADS1220_SelCh(ads_ch);
- break;
- case 1://讀取通道1 然后切換到通道2
- temp = ADS1220ReadData();
- Vin[1] = temp*2.048f/8388608;//轉換為電壓 單位V
- ads_ch = 2;
- ADS1220_SelCh(ads_ch);
- break;
- case 2://讀取通道2 然后切換到通道3
- temp = ADS1220ReadData();
- Vin[2] = temp*2.048f/8388608;
- ads_ch = 3;
- ADS1220_SelCh(ads_ch);
- break;
- case 3://讀取通道3 然后切換到通道0
- temp = ADS1220ReadData();
- Vin[3] = (temp*5/32767.0000)+0.0005;
- data = ((temp*5/32767.0000)+0.0005)*1000;
- //ads_ch = 0;
- ADS1220_SelCh(ads_ch);
- break;
- }
-
- return temp;
- }
復制代碼
ADS1220.h
|