0

好的,这个问题可能有点宽泛,因为我真的不知道从哪里开始。我会尽量说清楚。

我有一个带有已知显示驱动程序的手机显示器,我有数据表。该显示器将通过 SPI 与微控制器(msp430g 类型)通信。

发送到显示器的某些命令不会产生响应,但有些会产生响应,响应可能是几个“字节”(9 位数据)。

我首先认为我应该有一个 fifo 缓冲区,微控制器向其提供命令,以便微控制器可以在命令被移出时执行其他操作。但是我觉得在有响应的情况下,命令会与可能的响应“断开”。我不知道如何处理。

我的第二个想法是将所有命令作为函数来执行相关命令所需的 (write->[read*x])。但这感觉就像我会让微型站在那里等待 SPI 接口的方式。

在这种情况下,“正常”的事情是什么?我想有很多答案,但我确信已经编写了很多代码,它们使用某些接口与某些设备进行通信,但在接口“工作”时执行其他操作。

如果对我要做什么有任何含糊之处,请告诉我,我会尽力澄清。

4

2 回答 2

0

SPI 是主从,所以从从机接收(我假设显示器是从机)你需要传输一个虚拟字节的数据(所以主机在摆动时钟线),你应该得到 Rx 数据在您的 Rx (In/Rx/MISO) 引脚上计时。

如果有可以自主处理的硬件 SPI 接口,那么您可以将其全部留在后台工作,并在完成后获得中断。

我不能代表 MSP,但在 Coldfire 上,SPI 硬件可以加载一些东西到 Tx/Rx 并且会去做,在你的例子中,你会在 Tx 数据的末尾附加一个虚拟字节和当“就绪”中断发生时,回复字节将位于 RX 缓冲区的最后一个插槽中。

于 2013-05-02T09:14:27.330 回答
0

为了以有效的方式安排读取和写入,我建议使用中断。MSP430 在发送字节和接收字节时都会产生中断。当中断触发时,加载下一个要发送的字节(用于 tx),或存储接收到的字节(用于 rx)。发送命令后,您可以设置一个标志以获取响应(如果您期望得到响应)。收到回复后,您可以为主循环设置一个标志来处理回复。

于 2013-05-28T23:22:26.153 回答