0

我正在阅读,甚至在我的微控制器上得到了一个“主”SPI。这是我的问题,基本上如果主机想要初始化写入我们写入 SSPBUF 的从机,我们如何控制从机响应什么?在这种情况下,数据表对我来说似乎并不清楚事件的顺序。

IE Master 将一个 char 放入 SSPBUF,这会启动 SPI 模块向从机发送数据,在移位期间,从机返回一个字节。

在从端,有没有什么东西告诉你有传入数据,你可以先写入你的 SSPBUF,然后接受数据?

或者

在主设备有机会发起传输之前,您是否必须向 SSPBUF 写入您想要发回的第一个“返回值”?

4

4 回答 4

1

通常,我过去使用 SPI 所做的事情是我从主设备向从设备发送 2 个字节,其间延迟最小。主机发送:“X Y”,其中“X”是它希望从从机读取的变量,而“Y”实际上只是一个虚拟变量,用于输出从机的响应。同时,从机在收到“X”时获得一个中断,查找要放入其输出缓冲区的值,当它收到“Y”时,对其数据包的响应被计时输出给主机。

于 2010-06-03T00:51:16.380 回答
1

您想在处理从设备的片选的 GPIO 线上使用中断。确保从机有足够的时间处理此中断并在时钟开始之前加载输出数据寄存器。

某些 SPI 模块无法使用 GPIO - 您需要检查您的 SPI 模块是否具有处理芯片选择的功能,或者仅根据 GPIO 活动启用模块。

于 2010-06-03T01:04:59.610 回答
0

无论您的微控制器是什么,三个都可能是与接收 SPI 数据相关的 ISR,以及可以访问已接收数据并将其复制到局部变量的寄存器。

于 2010-05-28T14:56:10.020 回答
0

首先你需要确认你的master和slave的SPI模式和数据大小等参数有共同的值。SPI 模式将决定 SPI 时钟线的空闲极性和数据采样沿是第一还是第二。数据大小将说明它是 8 位还是 16 位,或者可能因芯片而异。

现在,当主机通过芯片/从机选择引脚选择从机时,从机变为活动状态并等待时钟改变其状态,一旦时钟改变状态,从机根据 SPI 模式选择再次等待时钟线的第一个或第二个边沿。如果它是第一个沿从机采样 MOSI 线数据并放入它的内部移位寄存器,如果从机也必须传输数据,它必须在所选时钟沿之前将数据保存在 MISO 线上。根据数据大小,此过程将重复 8 或 16 次。完成后,主机和从机可以向它们的 CPU 产生中断以收集数据(在微控制器的情况下)。

于 2017-09-24T05:43:53.450 回答