stm32 16位数据SPI通信

2019-03-23 19:13发布

      我最近在用stm32f103与一个器件进行SPI通信,这个器件要求16位数据格式。我用ST官方固件库编的程序,使用SPI1,频率是64分频,stm32作为主机,尝试读取器件ID。通过示波器观察,时钟信号正确,但是发送数据貌似有错位。我发的是0x5600,但从片选的下降沿观察MOSI,发现数据是0x0056这样的经过循环移位后的数据,不同波尔率下观察到的发送数据不同,比如0x0560。我注意到虽然stm32号称支持16位SPI通信,但是移位寄存器竟然是8位的,不知道究竟是怎么进行16位数据移位的。
     请问有没有做过SPI16位数据通信的大大,可以帮助小弟?在此十分感谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
zhaojun_xf
1楼-- · 2019-03-24 02:55
 精彩回答 2  元偷偷看……
wkelake
2楼-- · 2019-03-24 04:47
多谢关注。
请问如果是分两次发的话,具体是怎样操作的?
我试了写8位-读-写8位-读-组合数据 这样的操作,并不能读到数据
Li_Lei
3楼-- · 2019-03-24 07:19
是8位和16位可选的,I2s可以32位,要是配置没有错误也可能是数据大小端的问题,颠倒一下就是了
zhaojun_xf
4楼-- · 2019-03-24 08:09
 精彩回答 2  元偷偷看……

一周热门 更多>