从微控制器发送命令,通过SPI显示并接收结果

时间:2013-04-22 20:29:38

标签: c interface embedded microcontroller msp430

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

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

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

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

我的第二个想法是将所有命令作为执行(write-> [read * x])函数的函数来执行所讨论的命令。但这感觉就好像我会站在微处理器等待SPI接口的方式。

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

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

2 个答案:

答案 0 :(得分:0)

SPI是主从,因此对于来自从机的Rx(我假设显示器将是从机),您需要传输一个虚拟字节的数据(因此主机正在摇摆时钟线)你应该在你的Rx(In / Rx / MISO)引脚上输入Rx数据。

如果有一个硬件SPI接口可以自动处理这个,那么你可以把它全部留在后台工作&它应该在完成后得到一个中断。

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

答案 1 :(得分:0)

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