前一段时间温故了下标准库,使用的是F1系列芯片,测试程序。
1 硬件部分
1.1 电路
注:该电路只是参考,是我另一个板卡上使用。和本文所使用标准库代码不是一组引脚。
1.2 接线
SCK:ADS1220的串行时钟输入。
DRDY:数据准备就绪,低电平有效。
DOUT:串行数据输出。
DIN:串行数据输入。
CS:片选,低电平有效。
IN0~IN3:电压输入引脚。
VREF:REFP0是正电压输入引脚,REFN0是负电压输入引进。这里只引入了正电压,REFN0接地。
2 程序
2.1 SPI模式
该器件的SPI兼容串行接口适用于读取转换数据、读写器件配置寄存器以及控制器件工作状态。仅支持SPI1(CPOL=0,CPHA=1)。见官方手册Page34,8.5.1 Serial Interface。
ADS1220_IOInit()函数包含了IO初始化,SPI初始化以及外部中断引脚初始化。其中SPI1使用的是PB3、PB4和PB5,需要进行重映射。
IO重映射:GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE);
2.2 多路复用器
可以测量四路单端信号、双路差分信号、双路单端信号与单路差分信号组合。
该多路复用器通过配置寄存器的四个位(MUX[3:0])进行配置。见官方手册Page40。
测量单端信号时,ADC输入(AINN)通过多路复用器内的开关在内部与AVSS相连。
该多路复用器还可以将两个可编程电流源任意一路引至任意模拟输入或任意基准引脚(REFP0,REFN0)。
ADC并不能同时采样,切换通道时需要进行切换,重新配置。一个时间只能采样一个输入通道。
2.3 配置寄存器
SPI是全双工通信,读和写可以使用同一个函数。ADS1220寄存器配置都是8位,在初始化SPI1时,设置数据大小为8bit。在读16位ADC的值时,需要读2次。
具体配置内容在ads1220_Config.c文件中。
ADS1220一共有4个配置寄存器。先用SPI写函数进行写寄存器指令,根据官方手册Page36,Table 14,WREG一共8位,高4位固定为0100,低四位rrnn根据使用情况改写。rr=配置寄存器(00~11),nn=配置寄存器数量-1。
写完写寄存器指令后,再用SPI写函数对寄存器进行配置。
配置寄存器函数在ads1220.c中的void ADS1220WriteReg(uint8_t RegAddr,uint8_t Num,uint8_t* pData)。
ads1220_Config.h定义了4个寄存器一些配置参数。
<