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.

[参考译文] TMS570LS0914:如何为 TMS570 MCU 复位(清除) SPI 中的内部 Tx 缓冲器

Guru**** 2188815 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/847719/tms570ls0914-how-to-reset-clear-internal-tx-buffer-in-spi-for-tms570-mcu

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

您好!
在从模式下、我需要对 Hercules MCU 中 SPI1外设的内部 Tx 缓冲器进行复位(清零)(4引脚- SOMI、SIMO、CLK 和 CS)。 如果我通过 spiInit 函数(由 HAL CodeGenerator 生成)重新初始化 SPI、它会复位(清除)除内部 Tx 缓冲器之外的所有 SPI 寄存器。 因此、如果我传输新数据(例如、 0x01、0x02、0x03、0x04) 到 SPI、然后在 SOMI 上是预览数据传输的最后2个字节(0x03和0x04 - 内部 Tx 缓冲区的内容)、然后是我的新数据(0x01、0x02)。 当 SPI 总线上出现错误/干扰并且某些传输未完成或者从器件 SPI (TMS570)检测到总线上的干扰作为新通信的开始时、就会发生这种情况。 因此、可以手动清除 SPI 外设内部 Tx 缓冲器的内容、以便在出错后重新启动?

感谢您的回答。

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

    您好!
    TXBUF、RXBUF 和移位寄存器是用户不可见的寄存器。 SPIDAT0和 SPIDAT1是用户可见的、并被物理映射到 TXBUF 的内容

    •如果 TX 移位寄存器和 TXBUF 都是空的、那么数据被直接复制到 TX 移位寄存器中。 对于具有 DMA 的器件、如果启用了 DMA、则会生成发送 DMA 请求(TX_DMA_REQ)以获取下一个字。 如果发送中断被使能、那么就会产生一个发送器为空的中断。

    •如果 TX 移位寄存器已经满或者正在移位、并且如果 TXBUF 是昂贵的、那么写入 SPIDAT0/SPIDAT1的数据将被复制到 TXBUF 并且 TXFULL 标志同时被设定为1。

    •移位操作完成后、TXBUF 中的数据(如果已满)将被复制到 TX 移位寄存器中、TXFULL 标志将清零、以指示可以提取下一个数据。 同时产生发送 DMA 请求(如果使能)或发送器空中断(如果使能)。

    在 HALCoGen 安装下的示例文件夹中、您可以找到"Example_SPI_Master_Slave.c"、其中 SPI 模块用于传输和接收数据。 在 HALCoGen 帮助->帮助主题->示例中,您可以找到有关如何使用示例设置 MCU 的说明。

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

    您好!

    您是否管理过此问题?