我用原子哥的STM32F4探索者开发板,板子的SPI例程运行正常。我在这个例程的基础上,修改为与ADXL362通信的程序。该片子也是用SPI通信,要求CPHA=CPOL=0,SCLK为1M~5MHz,先发MSB。
初始化时读取下ADXL362的DEVID_AD(正确值为0XAD),确认无误后再进一步通信。遇到问题如下:
1、SPI各管脚的GPIO_Speed为默认100MHz时,读取到的数据一直为0XFF,将SCLK的GPIO_Speed修改为2MHz时,读出的数据为0X91,修改其他管脚的GPIO_Speed不起作用,还一直是0X91。虽然数据也不对,但数据却不一样了。请教下GPIO_Speed在这里起的作用是啥?
2、在上述配置下,读出的数据还是不对啊,正确应该是0XAD,我读到的却是0X91。我把程序流程和示波器的图发在下面,请大神帮忙分析下:
(1)按照数据手册,STM32向ADXL362依次发送读命令0X0B、DEVID_AD寄存器地址0X00,然后发送一个假的数据0XAA,同时读取ADXL362回复的数据。SCLK和MOSI波形如下所示:
SCLK和MOSI
(2)SCLK和ADXL362返回的数据MISO如下图所示(CS端常高,在SPI通信前拉低,通信结束后拉高,已确认无误):
SCLK和MISO
就是这张图有问题,应该是0XAD的,它却是0X91。请教大神~~~
一周热门 更多>