SPI 主从通信的总线控制方法
2016-11-17 14:32
309 查看
做一个SPI主从之间的通信协议,实现半双工的传输通信。
SPI通信:包含SPI通信的4跟线。
M_TX_PIN:表示如果SPI主机给从机发送数据前,需要把它拉高,表示目前只在发送,平时空闲为低
S_TX_PIN:表示如果SPI从机给主机发送数据前,需要把它拉高,表示目前只在发送,平时空闲为低
SPI主机给从机发送数据:
1.1.首先读取S_TX_PIN IO口,如果为高,代表SPI从机 目前只在给SPI主机发送数据,忙,则此时不能给从机发送数据。
1.2.首先读取S_TX_PIN IO口,如果为低,代表可给从机发送数据,立刻把主机M_TX_PIN IO口拉高,延时一会,再次读取S_TX_PIN IO口.
1.2.1. 如果 S_TX_PIN IO口为低电平,表示抢得 主机给从机 发送数据的权限,接下来主机可以给从机发送数据了。发送完成以后,主机把M_TX_PIN拉高。
1.2.2.如果 S_TX_PIN IO口为高电平,表示刚才同一时刻,主从同时进行发送数据的总线请求,同时检查到对方空闲,并同时拉高自身发送的IO口,这样造成了互抢 了临界资源,所以此时主机把M_TX_PIN拉低,释放发送总线。
SPI从机给主机发送数据:(原理跟上面一样,不在详细说明)
在应用程序上了FreeRTOS操作系统以后,存在应用程序判断完对方空闲以后,没有拉高自身的发送控制总线,因需要运行其他更高优先级的任务,立刻切到另一个任务运行,当再次回到当前任务时,在另一个任务运行期间,对方也检查到了主机这边空闲,也进行了发送控制操作,导致两方互相发送数据。
解决问题的办法:任何一方获取发送总线的时候,进行进入行临界区的保护操作,获取总线后再退出临界区,这样就可以避免问题的发生!
SPI通信:包含SPI通信的4跟线。
M_TX_PIN:表示如果SPI主机给从机发送数据前,需要把它拉高,表示目前只在发送,平时空闲为低
S_TX_PIN:表示如果SPI从机给主机发送数据前,需要把它拉高,表示目前只在发送,平时空闲为低
SPI主机给从机发送数据:
1.1.首先读取S_TX_PIN IO口,如果为高,代表SPI从机 目前只在给SPI主机发送数据,忙,则此时不能给从机发送数据。
1.2.首先读取S_TX_PIN IO口,如果为低,代表可给从机发送数据,立刻把主机M_TX_PIN IO口拉高,延时一会,再次读取S_TX_PIN IO口.
1.2.1. 如果 S_TX_PIN IO口为低电平,表示抢得 主机给从机 发送数据的权限,接下来主机可以给从机发送数据了。发送完成以后,主机把M_TX_PIN拉高。
1.2.2.如果 S_TX_PIN IO口为高电平,表示刚才同一时刻,主从同时进行发送数据的总线请求,同时检查到对方空闲,并同时拉高自身发送的IO口,这样造成了互抢 了临界资源,所以此时主机把M_TX_PIN拉低,释放发送总线。
SPI从机给主机发送数据:(原理跟上面一样,不在详细说明)
在应用程序上了FreeRTOS操作系统以后,存在应用程序判断完对方空闲以后,没有拉高自身的发送控制总线,因需要运行其他更高优先级的任务,立刻切到另一个任务运行,当再次回到当前任务时,在另一个任务运行期间,对方也检查到了主机这边空闲,也进行了发送控制操作,导致两方互相发送数据。
解决问题的办法:任何一方获取发送总线的时候,进行进入行临界区的保护操作,获取总线后再退出临界区,这样就可以避免问题的发生!
相关文章推荐
- Javascript与flash交互通信控制的方法
- MCS-51系列单片机模拟SPI总线的方法
- IIC总线、SPI总线、串口232通信、422通信、485通信、TCP/IP协议
- 总线通信控制之异步串行通信的数据传输
- 浅谈总线通信机制(串口、I2C、SPI、USB。。。)(通信基础+串口部分)
- Javascript与flash交互通信控制的方法
- SPI通信总线原理及工作过程
- SPI通信总线-51
- 芯片级通信总线之一:SPI
- JS与flash交互通信控制的方法
- 多线程的通信方法总线
- JS与flash交互通信控制的方法
- CC2530 的SPI通信中的问题和解决方法
- LPC ARM使用SPI总线控制8个LED灯实例。
- TCP/IP协议和工业以太网传输控制方法 及通信模式比较1
- 总线接口与计算机通信(二)SPI总线
- 基于Dragonboard 410c的总线控制之SPI(二)
- 【iCore3 双核心板_FPGA】实验十六:基于SPI总线的ARM与FPGA通信实验
- 基于Dragonboard 410c的总线控制之SPI(一)
- 3.2 应用层与内核的通信方法 :访问数据的I/O方式、读写驱动程序、发送I/O控制码、内存共享