Other Parts Discussed in Thread: ADS1298
您好!
在我们的项目中、我们将通过 AT91SAM7S 微控制器试用采用 ADS1298 (共4个 ADC)的有效负载板。 为了确保 ADC 在开发阶段遵循指令、我们尝试通过 SPI 总线检索所有26个寄存器内容、但仅获取0。 以下是用于读取寄存器的代码:
uint8_t adcRegisterContent[26]={0}; //用于存储寄存器的数组
SPI_Transfer (ADS1298_1.SPI.cs、SDATAC、SPI_Last); //连续发送停止读取数据指令
SPI_Transfer (ADS1298_1.SPI.cs、RREG | 0x00、SPI_CONTINUE); //发送读取寄存器指令、首先读取寄存器0
SPI_Transfer (ADS1298_1.SPI.cs、25、SPI_CONTINUE);//要求读取25 + 1寄存器
for (uint8_t I = 0;I < 26;I++)
adcRegisterContent[i]=(uint8_t) SPI_Transfer (ADS1298_1.SPI.cs、0x00、i==25? SPI_LAAST:SPI_CONTINUE); //尝试检索每个寄存器的内容
SPI_Transfer (ADS1298_1.SPI.cs、RDATAC、SPI_LAST); //连续发送读取数据指令
函数
uint16_t SPI_Transfer (uint8_t componentChipSelect、uint16_t dataToSend、uint8_t spiMode)
返回 SPI 总线接收的数据、spiMode 决定片选是否保持活动(SPI_CONTINUE)(SPI_LAST_LAST])。
AT91SAM7S 和 ADS1298之间通过 SPI 进行通信的速度为2MHz、并根据数据表(SCLK、MISO 和 MOSI 相位)进行相应配置、ADS1298使用2.048MHz 的外部时钟、并配置为以24位分辨率每秒500次采样。 我们能够在连续模式下读取数据并运行 GPIO (GPIO 读数与状态字中的某些不一致)、但我们无法检索寄存器的内容。
SPI clk、cs、MISO 和 MOSI 上的示波器读数告诉我们、AT91SAM7S 发送的指令是它们预期的样子、并且 MISO (DOUT)在它应该是什么时保持为0。
我们用于 ADS1298的启动顺序如下:
它们由两人一组安装在独立供电的有效负载板上、并通过三态门进行隔离。
-为电路板加电、只要电路板打开、三态栅极就会打开、并且我们接收来自主电源和有效载荷电路板电源的电源正常信号、
此时、精密时钟馈送到 ADS1298;
等待300ms;
在 ADS1298的 RESET 引脚上发送2ms 脉冲;
通过 SPI 发送 SDATAC 指令
通过 SPI 发送寄存器 CONFIG1-4、GPIO 和 CH1-8SET 的配置;
-将 Start Measure (开始测量)引脚设置为 High (高)、这样我们就不会在不需要时接收到数据就绪信号。
RDATAC (通过 SPI)和 START (通过引脚 Start Measure (开始测量)设置为 Low (低电平)指令将在稍后需要测量时设置
您是否能看到有什么原因可以解释为什么我们无法读取 ADS1298寄存器的内容?
我很乐意提供所需的更多信息。