请教一下,STM32F4采用SPI2模块接口作为主设备向ADS8332的CFR寄存器写入数据,时钟线空闲时高电平,在第二个时钟沿采集数据。但是不论写入什么配置数据(0xExxx),最后读取出来的数据总是0xfffe。请问这种情况是由于通信错误还是芯片已经坏掉了?波形图如下:前一段波形表示发送0xC000读取CFR配置,后一段波形表示发送0xE8FD配置CFR寄存器。
JinPing Zheng:
回复 user151383853:
谢谢,原因已找到,是我自身的问题。原因共有三:小大端模式写反,时钟极性写反,未仔细阅读datasheet。ADS8332的SPI传输模式正确配置如下:
SPI_InitTypeDefstruct.SPI_CPOL=SPI_CPOL_Low; SPI_InitTypeDefstruct.SPI_CPHA=SPI_CPHA_2Edge; SPI_InitTypeDefstruct.SPI_FirstBit=SPI_FirstBit_MSB;
错误贴出来望后来人不再走弯路。
JinPing Zheng:
回复 user151383853:
谢谢,原因已找到,是我自身的问题。原因共有三:小大端模式写反,时钟极性写反,未仔细阅读datasheet。ADS8332的SPI传输模式正确配置如下:
SPI_InitTypeDefstruct.SPI_CPOL=SPI_CPOL_Low; SPI_InitTypeDefstruct.SPI_CPHA=SPI_CPHA_2Edge; SPI_InitTypeDefstruct.SPI_FirstBit=SPI_FirstBit_MSB;
错误贴出来望后来人不再走弯路。
Martin:
请问你是用什么硬件平台做的实验?
ADS8332的 CONVST、 EOC 引脚是怎么连接的?
JinPing Zheng:
回复 Martin:
硬件平台是我自己设计的一块小板,MCU采用的STM32F407,CONVST上拉之后直接连接MCU输出脚,EOC连接MCU输入脚,目前来看芯片工作是正常的。