TMS320F28xx SPI master/slave example
来源:互联网 发布:php mongodb 关闭连接 编辑:程序博客网 时间:2024/05/29 13:49
串行外设接口(SPI)是一个高速同步的串行输入/输出口。SPI的通信速率和通信数据长度都是可编程的,SPI通常用于DSP和外部外设及其他处理器之间的通信。主要用于显示驱动器、ADC及日历时钟等器件间接口,也可采用主/从模式实现多处理器间的通信。
本文示例采用了两块TMS320F28xx开发板,将四个外部引脚SPISOMI、SPISIMO、SPISTE、SPICLK一一对接,主要实现两个DSP间的通信。
示例代码基于TMS320F28xx开发包中的spi_loopback修改而来。我将spi_loopback工程复制并修改成两个工程:spi_master和spi_slave,分别作为SPI主机和从机。
首先是main(),主机和从机的main函数基本一致,初始化的过程与原spi_loopback工程一样,我只是将主要的数据处理过程改为调用函数spi_task(),以方便查看代码。
主机的SPI初始化函数spi_init()
从机的SPI初始化函数spi_init()
主/从机的FIFO初始化函数spi_fifo_init()
主机的数据处理函数spi_task(),该函数发送SPI_MASTER_XMIT,并查看读到的数值是否是与从机约定好的SPI_SLAVE_WAIT,如果是才将需要从机处理的数据发送给从机,待处理数据发送完毕,主机就开始不停发送SPI_MASTER_WAIT,等待从机回传处理结果。
从机的数据处理函数spi_task(),首先从机一直处于等待状态,当接收到SPI_MASTER_XMIT后便开始接收len长度的数据,数据处理完毕将处理结果回传给主机。这里需要注意的是回传处理结果之前需要将FIFO接收寄存器复位,否则在处理过程中从机已接收到主机发来的多个SPI_MASTER_WAIT,调用spi_xmit()就无法得到正确的数据。
spi_task()中用到的常数
主/从机的spi_xmit()函数,该函数在spi_loopback中只负责发送数据,在本例中我改为发送数据后立即接收数据。
- TMS320F28xx SPI master/slave example
- spi slave
- master-slave
- Master-Master Master-slave 区别
- spi--master
- spi传输音频数据结构和流程机制的设计(master->slave)
- Keepalived+Master-Master-Slave组合
- STM32 SPI SLAVE
- MySQL Master-Slave Replication
- master-slave自动切换
- MYSQL-master-slave实践
- ActiveMq master/slave
- Jenkins Master/Slave架构
- memcached cluster master-slave
- mysql模式:master/slave
- mysql master slave 配置
- Mysql Master/Slave备份
- Jenkins Master/Slave架构
- jQuery1.4源码学习六
- Unhandled exception in XXX.exe(MFCO42D.dll)0xC00000005:Access Violation
- JQuery的一种特效:展开和收缩
- trac 插件
- javascript弹出窗口大全
- TMS320F28xx SPI master/slave example
- 移植x264过程记录1
- 深圳——经历磨练
- MyEclipse 8.5 快捷键
- jQuery 学习笔记
- VC++常用数据类型及其操作详解
- .net调用oracle存储过程返回值时遇到的问题
- Linux系统密码忘记后的五种恢复方法
- MFC 在对话框显示图片的多种方法