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

[复制链接]
5520|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.
 楼主| robin0557 发表于 2012-1-17 11:01 | 显示全部楼层
我看到其它帖子也说到类似问题:nss不能自动拉高i。解释是符spi标准。没bsy中断确实不方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部