PIC SPI配置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PIC SPI配置问题相关的知识,希望对你有一定的参考价值。

我有一些与SPI的SPIxCON寄存器有关的问题。我用的是PIC18F26K83。 1)有一个SPIxTCNTH:SPI传输计数器MSB寄存器。我可以在其上设置前3位,用于计数要传输的位。根据数据表,它是可写的。根据数据表,它计算将被传输的位然后为什么它是可写的?我是否需要根据我要发送的位来编写它?或者是否通知用户。

2)有SPIxTWIDTH:SPI TRANSFER WIDTH REGISTER。在BMODE = 1的情况下,传输计数器计数的每次传输的大小(以位为单位)I将向DAC发送诸如1.1或2.3的值。在这种情况下,我应该将它设置为什么?这个寄存器有标准价值吗?

3)根据我们无法用软件控制的数据表,我无法得到FIFO寄存器的内容。它不像缓冲区吗?因此,如果我写入发送寄存器的速度比传输速度快,则发送数据将被放入FIFO。他们将一个接一个地传播。我对么?我不需要任何东西而不是写入发送缓冲区。

4)我读了但无法理解SPIxCON1中的极性位。如果我不触摸控制寄存器中的这些位,可以吗?我不想搞砸。

5)我如何选择奴隶? SPIxCON2寄存器中有一个SSET(从器件选择使能位)。我可以把它做成1,但那我怎么能选择奴隶呢?

谢谢您的回答。我是新手。对不起,简单而且可能没有意义的问题。或者我可以简单地显示我的配置代码,但我相信它会更难分析。

答案

1)传输计数器(在使用时)被写入以发送或接收的字节数或部分字节数(取决于模式)。因此,如果您将它(BMODE = 0或TXR = 0)用于您希望发送或接收的字节数,则可以设置它。

2)您需要查看这些数字的二进制表示,以查看在每种情况下您要发送的位数。标准值是一个完整的字节。

3)FIFO是隐藏元素,写入SPIxTXB或从SPIxRXB寄存器读取访问相应的FIFO。 FIFO只有两个字节的深度,所以你仍然需要检查溢出,如果你发送快速TXWE位(iirc),但如果你有很多数据要快速传输我建议使用DMA进行传输然后你' d只需进行设置并让它去,并可以做其他事情,直到它完成。

4)我认为极性位只是将空闲状态下的线路电平设置为高电平或低电平。它应该为每个人(主人和奴隶)设置相同。

5)如果您只有一个从站,则可以将该线路连接到从站启用线路。如果你有多个从设备,你需要为每个设置一个gpio线路(对于每个设备)或者将信号设置在一起并将OR输出连接到从设备(如果它是低电平有效,通常是这样) 。确保一次只有一个从站处于活动状态。也可以做一个菊花链奴隶。我没有使用过这种设置。

以上是关于PIC SPI配置问题的主要内容,如果未能解决你的问题,请参考以下文章

设置 RXIF 标志时未调用 PIC32 SPI ISR?

请教PIC单片机写I2C和SPI时,卡住在 while(!SSPIF);

与 Pic 16F913 通信

这个 PIC 12F675 配置我缺少啥?

java SPI 07-自动生成 SPI 配置文件实现方式

关于STM32 中模拟IIC或SPI管脚配置问题?