PIC SPI配置问题

PIC SPI configuration questions

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

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

3) 根据数据表,我无法了解 FIFO 寄存器的用途,我们无法通过软件控制它们。这不就像一个缓冲区吗?所以如果我写入传输寄存器的速度快于传输速度,传输数据将被放入 FIFO。它们将被一个接一个地传送。我对么?除了写入传输缓冲区外,我什么都不需要。

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

5) 我怎样才能select slaves? SPIxCON2 寄存器中有一个 SSET(Slave select 使能位)。我可以使它成为 1,但是我如何 select 从属?

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

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

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

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

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

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