PIC SPI配置问题

时间:2019-04-19 14:03:54

标签: pic spi

我对SPI的SPIxCON寄存器有一些疑问。我使用PIC18F26K83。 1)有一个SPIxTCNTH:SPI传输计数器MSB寄存器。我可以在其上设置前3位,以对要传输的位进行计数。根据数据表,它是可写位。根据数据表,它计算将要传输的位数,然后为什么可写?我是否需要根据将发送的位写它?还是在那里通知用户。

2)有SPIxTWIDTH:SPI传输宽度寄存器。如果BMODE = 1,则为 传输计数器计算的每次传输的大小(以位为单位) 我将向DAC发送诸如1.1或2.3之类的值。在这种情况下,我应该将其设置为什么?该寄存器有标准价格吗?

3)根据数据表,我无法获得FIFO寄存器的含义,因此我们无法通过软件对其进行控制。它不像缓冲器吗?因此,如果我写传输寄存器的速度快于传输速度,则传输数据将被放入FIFO。并一一传送。我对么?除了写传输缓冲区,我不需要做任何事情。

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

5)如何选择奴隶? SPIxCON2寄存器中有一个SSET(从选择使能位)。我可以设置为1,但是如何选择从属呢?

谢谢您的回答。我是新手。很抱歉提出一些简单的问题,可能是没有意义的问题。或者,我可以简单地显示我的配置代码,但我相信它会更难分析。

1 个答案:

答案 0 :(得分:1)

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

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

3)FIFO是隐藏元素,写入SPIxTXB或从SPIxRXB寄存器读取将访问相应的FIFO。 FIFO只有两个字节的深度,因此如果您要发送快速TXWE位(iirc),您仍然需要检查溢出,但是如果您有大量数据要快速传输,我建议您使用DMA进行传输,然后d只需对其进行设置并将其放开即可进行其他操作,直到完成为止。

4)我认为极性位只是将空闲状态下的线路电平设置为高电平或低电平。所有人(主机和从机)的设置都应该相同。

5)如果只有一个从站,则可以将该线路绑定到从站启用线路。如果您有多个从站,则需要为每个和(每个)或信号设置一条gpio线,并将OR输出连接到从站使能(如果它为低电平有效,通常是这样) 。确保一次仅激活一个从站。也可以做一个奴隶的菊花链。我没有进行过那种设置。