0

我想将一串字符从一个 proc(主)发送到另一个(从),然后从从属读取字符串。

目前我正在混合使用 arduino 和 LPC1788,使用 lpc 作为主机,使用 arduino 作为从机。LPC 正确发送了 arduino 在 ISR 中接收到的字符串。在循环函数中,我检查是否收到所有字符,然后尝试发回字符串。在 LPC 方面,ISR 由于某种原因无法正常工作。我已将 SR 设置为

SR = (1<<TNF) | (1<<RNE);

所以我在从 LPC 发送字符串之后延迟了,然后从 arduino 开始读取。

我在洛杉矶看到的发送字符串是:

在此处输入图像描述

但是从 Arduino 读取字符串看起来很奇怪(字符串应该是“Pong\n”,我收到的并不总是 P……它会有所不同) 在此处输入图像描述

我想大多数问题都在发送和读取 SPI 缓冲区的同步中。在 LPC 上没有功能性 ISR 的情况下,我如何实现这一目标?

4

1 回答 1

0

SPI 规范规定 CS (SSEL) 线应在一帧期间处于活动状态,而在其间变为非活动状态。恩智浦将此解释为一个词是一帧。这意味着由 SSP 块生成的 CS(对于传统 SPI 也是如此)仅在一个最多 16 位的事务期间有效。

另请注意,发送的单词/帧之间总是存在间隙。因此,即使您填充 FIFO 或使用 DMA,您也会看到 16 个时钟脉冲、一个短暂的延迟,然后是 16 个更多的脉冲。

当使用 GPIO 引脚作为 SSEL 时,请注意您必须等待 SSEL 断言或解除断言,直到外设空闲。

于 2013-10-16T11:23:01.410 回答