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.

[参考译文] TMS320F28379D:8位长度的 SPI 通信

Guru**** 2539500 points
Other Parts Discussed in Thread: TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/610133/tms320f28379d-spi-communication-with-8-bits-length

器件型号:TMS320F28379D

您好!

我有 TMS320F28379D、它通过 SPI 接口(4线制)连接到 RTC 模块。
RTC 模块提供8位长度的地址和数据。

当我将 SPI 配置为16位(SPICHAR = 15)并使用16位读取/写入时、结果正确:

 SPI_writeByte (0x0100);  
 second = SPI_readByte ();//读取寄存器0x01
但是、如果数据长度被设定为8 (SPICHAR = 7)、那么在以下两种情况下、所有接收到的数据都是错误的:

1。
SPI_writeByte (0x01);           //秒寄存器读取地址
SPI_readByte ();                //虚拟读取
SPI_writeByte (0x01);  
second = SPI_readByte ();//读取寄存器0x01

2.
SPI_writeByte (0x0100);  
second = SPI_readByte ();//读取寄存器0x01

我缺少什么吗?

谢谢、
HL

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

    对于我的应用:
    SpiaRegs.SPICCR.bit.SPICHAR = 0xB;// 3:0字符长度控制12位

    这就是我发送12位的方式
    SpiaRegs.SPITXBUF = Vout1R << 4;

    这就是我将从器件数据返回的方式。
    RDATA_b = SpibRegs.SPIRXBUF & 0x0FFF;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。

    当长度被设定为8时、当一个写入正在进行中时、示波器显示8个时钟脉冲、但是没有用于下一个读取的时钟。
    我是否必须执行虚拟或下一次写入才能读取? 或者、我是否在 SPI 主配置中缺少某些内容?

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

    读取串行位流由发送时钟同时计时到寄存器中

    在数据被发送后、从器件数据已经移入寄存器。
    读取寄存器的内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主器件需要先发送地址、然后从器件将相应的值移出主器件。

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

    你(们)好、亨利

    您是否已解决问题或仍有问题?

    -Marlyn

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

    是的、我发送地址左对齐–0x0100用于地址01。
    问题是读取的值将在8个时钟脉冲之后出现、但如果长度设置为8、则 SPI 主器件仅提供8个时钟脉冲。

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

    亨利
    对于 SPI、主器件是唯一提供时钟的器件、并且仅在发送期间提供时钟。
    如果您的定制设计是发送地址、则从器件会接收该地址、并在下一次发送期间在管道中进行响应。

    您的从器件是8位还是16位从器件? 它通常与主器件相同。

    在我的应用示例中、 地址始终相同、因此我在 uC 中传输 ADC 转换的值、用于绘制响应、从器件在同一传输期间将模型计算输出的电压表示发送回 uC。