1. 初识ADS131M04:为什么这个ADC让我又爱又恨
第一次接触TI的ADS131M04时,我的心情是相当兴奋的。这是一款四通道24位高精度ADC,性能参数相当漂亮,价格也比ADI的同类产品友好不少。但很快我就发现,这个芯片的SPI通信协议设计得有点"特别",让我这个有十年嵌入式开发经验的老手也栽了跟头。
ADS131M04的SPI接口不像常见的传感器那样简单直接。它采用了一种基于"字"的通信格式,每个字24位,而且命令和响应之间存在一种奇特的延迟关系。最让我头疼的是读取芯片ID这个看似简单的操作——本来应该读出FF24,我却一直得到7F92,这个问题困扰了我整整两天时间。
后来才发现,问题出在STM32CubeMX的SPI配置上,特别是CPOL和CPHA这两个参数的设置。CubeMX的界面标注和ADS131M04手册中的描述存在一些理解上的差异,导致我一开始就走错了方向。这也是我写这篇指南的原因,希望能帮助大家避开我踩过的坑。
2. SPI配置的核心:理解CPOL和CPHA参数
2.1 什么是CPOL和CPHA
CPOL(Clock Polarity)和CPHA(Clock Phase)是SPI通信中两个最关键的参数,它们决定了时钟信号的极性和数据采样的时机。CPOL定义时钟空闲状态的电平:0表示低电平,1表示高电平。CPHA定义数据采样的时刻:0表示在第一个时钟边沿采样,1表示在第二个时钟边沿采样。
对于ADS131M04,数据手册第10页明确要求CPOL=0,CPHA=1。这看起来很简单,但问题就出在STM32CubeMX的配置界面上。CubeMX用"Edge"来标识采样时刻,而这里很容易产生误解。
2.2 STM32CubeMX中的配置陷阱
在CubeMX中,当你选择CPHA=1时,界面会显示"2 Edge"。但很多开发者(包括我)会下意识地认为"1 Edge"对应CPHA=1,因为1对1似乎很合理。实际上正好相反:
- CPHA=0 对应 "1 Edge"(第一个边沿采样)
- CPHA=1 对应 "2 Edge"(第二个边沿采样) <


4万+

被折叠的 条评论
为什么被折叠?



