打印

stm32F103的SPI发送移位寄存器发送中断

[复制链接]
4697|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
robin0557|  楼主 | 2012-1-11 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SPI时钟18Mhz
原因:SPI读写在中断完成,目前发现只有DR寄存器空的时候才能产生中断,但此时移位寄存器还没发送完,这时候如果拉从机片选的话肯定不对。
我的要求是移位寄存器发送完成产生中断,然后把片选拉高。目前好像busy状态不能产生中断。请问大家有没简单的办法来提高CPU效率。不希望用延时的办法。比如另起一个定时器
沙发
香水城| | 2012-1-11 11:51 | 只看该作者
是的,BSY不能产生中断。

但是你可以计算一下,SPI时钟18Mhz时,发送一个字节只需不到500ns,当你收到最后一个TXE中断时,只需要在这个终端中等待很短的一段时间,从整体讲,并不会降低CPU效率。

使用特权

评论回复
板凳
robin0557|  楼主 | 2012-1-13 19:04 | 只看该作者
发现可以这样解决。SPI在发送的时候也在接收,只要收发长度设为一样。可以用接收中断来代替发送。

使用特权

评论回复
地板
airwill| | 2012-1-14 10:28 | 只看该作者
我感觉这也算是 STM32F103 系列的一个缺陷. 我觉得本来 NSS 是可以无需软件干预就完成楼主的片选功能的. 因为硬件系统很清楚什么时候数据结束, 什么时候释放信号.
而且在其他芯片中也有这个功能. 比如 AVR, Luminary 的 SPI.

使用特权

评论回复
5
robin0557|  楼主 | 2012-1-17 11:01 | 只看该作者
我看到其它帖子也说到类似问题:nss不能自动拉高i。解释是符spi标准。没bsy中断确实不方便

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

68

帖子

0

粉丝