SPI通讯实验,为什么SPI0DR寄存器中的值都是255

 我来答
匿名用户
2017-01-15
展开全部
SPI通讯实验,为什么SPI0DR寄存器中的值都是255
SPI_RW(reg)返回的值不是A的值,这里返回的值没有意义是被丢弃掉了的,紧接着下一次SPI_RW(0)返回的才是。
一次spi操作一般在CS(片选)的一个周期进行,
在读取寄存器值时一般需要调用2次以上的spi_RW,
比如读取寄存器reg,
首先 拉低CS线(片选)->调用SPI_RW(reg),这里的reg实际上是0...1111按位与上reg,因为reg这个地址没有用到最高位,最高位为0代表读地址操作,1代表写地址操作。->再次调用spi_rw(0)
,这里为0是因为读操作,如果是写那么就是写地址reg的值,即spi_rw(val) ->拉高CS线结束spi操作。

SPI读写时是先写地址与操作或命令的一个byte,再读写值的一个byte,也就是CLK周期是2个BYTE也就是2* 8bit = 16个周期的。
地址与操作的一个byte:这个字节的最高位是控制读写的,读写分别为 0b0xxxxxxx或0b1xxxxxxx
的形式, xxxxxxx中的最后几位是地址。中间几位是spi命令。
值的一个byte:
如果是读,那么全为0,如果是写,那么就是要写的值。如果是命令就看命令的定义了。
在时钟线电平的上升yuan写1位,的在时钟下降yuan读1位的,当这8个时钟周期完结那么就得到了8位正好一个字节。当然如果寄存器的数据宽度是2个字节时,相应的这里就要是16个时钟周期2个字节。

没用过nrf24l01模块,但一般spi的过程就是这样,关键要看你要访问的模块的spec文档,里面都描述了这些读写,控制的时序图
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式