This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1224:MIBSPI 如何从从器件接收多个字节

Guru**** 2460850 points
Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/650174/tms570ls1224-mibspi-how-to-receive-multiple-bytes-from-slave

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

大家好。 我正在使用微控制器访问 Micro SD 卡。 我有两个问题:

 1.这是一个一般 SPI 问题,请检查我对该主板的理解是否正确:

    SIMO 传输期间、SOMI 被拉至高电平。 从器件应在 SIMO 结束后发送其数据 主器件应生成额外的时钟以允许从器件发送其数据。 是这样吗?

 MIBSPI

     如果从器件发回多个字节的数据、例如6个字节、那么主器件应该在 SIMO 结束后生成6 * 8 = 48个时钟。 但是、当我读取 SPI 模块时、接收到的数据会进入仅为4字节的 RX-BUF 和 SPI-BUF。 我知道 MIBSPI 有一个用于存储数据的 RAM 区域、我们可以通过 TG 起始地址进行访问。 但我认为它只是传输数据、而不是接收到的数据。 接收到的数据会传输到哪里? 以及如何访问?

 感谢耐心等待。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Joe、

    SPI 主器件无需为从器件生成额外的时钟周期即可传输数据。 当 SPI 主器件发送数据(真实数据或虚拟数据)时、SPI 可以发送数据。

    SPI 可通过 SW 配置为作为主器件或从器件运行。 在受控模式下(主机= 0、CLKMOD = 0)、数据在 SPISOMI 上移出、在 SPISIMO 引脚上移出。 SPICLK 引脚用作串行移位时钟的输入、该时钟由外部 SPI 主器件供电。 没有这个时钟、SPI 从器件就无法传输数据。 当从 SPI 主器件接收到 SPICLK 信号时、写入 SPIDAT0或 SPIDAT1寄存器的数据被发送到网络。 为了接收数据、SPI 从器件等待主器件发送 SPICLK 信号、然后将 SPISIMO 引脚上的数据移入 RX 移位寄存器。 如果数据要由从器件同时发送、则必须在 SPICLK 信号开始之前将数据写入 SPIDAT0或 SPIDAT1寄存器。

    如果从器件希望发送6个字节、而主器件需要生成48个时钟信号。  

    要使用 MIBSPI、请参阅通过 HALCoGen 生成的 Mibspi 示例工程: