【SPI】之调试笔记

总线协议: SPI
工作方式: 全双工

1.某xx的 ip, 传输模式有 4 种, 分别为, read onlywrite only, read_writeeeprom模式
这里主要介绍2种模式,read_write模式, eeprom模式

read_write模式: 因为spi是全双工模式,mosi 在发送 1 byte数据的同时,miso信号线上是存在数据的默认值为FF(默认状态下mosi 拉高的);那么在实际应用中, 使用spi协议 主设备进行命令发送的同时,miso也会有数据, 假设fifo 存在 并打开, 主机发送了多少个字节的数据, 那么spi_rx_fifo 中就会相应的接收多少个数据,这些数全为0xff(实际上并不是从设备回复的有效数据),因此在读取操作中, 需要丢弃掉无效的数据,如下图为 在read write 模式下,主机使用 spi 下发命令的波形:
在这里插入图片描述
从图中可以看出 mosi 发出指令0x0F, 0xC0,的同时 miso 信号线上 的数值为0xff, miso 回的有效数据为 第3个字节的0x00, mosi上的第3个字节 0xff, 不是命令, 只是为了提供时钟(实际测试也可不需要)

eeprom模式: 主机发送数据 或者从机回数据给主机,对应的 rx_fifo 和 tx_fifo中,没有任何无效数据, 软件上不需要做任何处理, 直接从fifo中读数据就可以了,比如eeprom模式下手册上有这么一句:“In eeprom-read mode, receive data is not valid while control data is being transmitted. When all control data is sent to the EEPROM, receive data becomes valis and transmit datat becomes invalid” , 如下图为eeprom模式的波形:
在这里插入图片描述
上图是在eeprom模式(存储器读写模式)下写了几个page ,批量数据传输 建议eeprom模式,

在这里插入图片描述
上图是eeprom 下的 WRITE 操作, 可以看出,主机在连续写数据, miso对其 不会产生影响, 在主机发数据的同时,miso 信号线上的数据全为 0xff, 这一点应该可以说明 全双工模式下,RX 和 TX 的状态了, 加深理解 “In eeprom-read mode, receive data is not valid while control data is being transmitted.”

在这里插入图片描述
上图是eeprom 下的 READ 操作,主机发送完读取的page 地址 0x0B , 0x00, 0x00 ,0x00后, 信号线 mosi 上的值全为0x00, 从设备立马就回数据到rx_fifo中了(实际回的数据从波形信号线 miso 的第4个字节开始,前边的数据会被自动无效掉, 加深理解
When all control data is sent to the EEPROM, receive data becomes valis and transmit datat becomes invalid”), 因此软件直接读取 rx_fifo 就可以拿到数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值