STM32F103C8T6的SPI的软件使能不对,求解释

wuwuboji 2014-08-12 10:44:33
最近刚上手STM32,用他来控制AD5410这个芯片。通信接口是SPI。程序现在不在手头,发不了。
简单的说下这个AD5410,这个芯片用来产生4~20mA工控通讯电流,配置这颗芯片需要STM32一次发送24位的数据,协议比较简单。
再简单说下我的程序,配置了一下STM32的程序GPIO功能和时钟,配置了IO复用时钟,配置了SPI时钟,配置SPI每次发送8位,SPI的使能线GPIO_Pin_4由软件控制。
显然在通信的时候,先使能,然后给SPI连续写三次数据(三次中间里面有判断发送完成标志,这里判断方式基本就是抄的网),然后在不使能芯片。
然后奇怪现象就是为什么那个使能线的信号只保持到了第二个数据发送接受??
然后我就简单测试了下,如果连续写2次数据使能信号只能保持到第一个数据发送结束,如果只发一个的话,使能线会在一个位后就立马被改变了。
再看看以前公司的一个W5200的程序,发现W5200的SPI通信一次其实只要32个位,可是实际程序里面在使能后却忘SPI的发送寄存器里写了5次,最后一次注释写的是发送哑数据,然后再拉高使能IO。

这个和我以前用的ATmega的单片机的硬件SPI有点出入啊,我是刚接触STM32,是我哪里弄的不对么,求指教吐槽拍砖,我统统都收了~~
...全文
427 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuwuboji 2014-08-12
  • 打赏
  • 举报
回复
单机???
wuwuboji 2014-08-12
  • 打赏
  • 举报
回复
实在想不通啊,怎么会这样的呢,以前也用过51写SPI,都是软件完成的,也不需要在使能后在多8个时钟啊。。STM32神马用意~~

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧