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.

[参考译文] TMS570LS3137:MibSPI 从器件->主器件传输第一值丢失第一位

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1287012/tms570ls3137-mibspi-slave---master-transfer-1st-value-missing-first-bit

器件型号:TMS570LS3137

我正在处理 MIBSPI 从器件传输测试代码。

MibSpi3是主器件、MibSpi5是从器件、我已经在 TMS570LS31HDK 上将 CLK、CS、MOSI、MISO 线路物理连接在一起。

我正在执行一个16位的传输组。

数据传输工作正常、但第一个16位主机 RX 值不是从机 TX 数据值。  

16个数据值中的所有其余值都正确、只是第一个16位主机 RX 值损坏。  

好像没有读取最低有效位、因为当我从从器件发送0x2222时、主器件读取0x1111 (如果在10MHz 上运行、则为0x9111)、而当从器件发送0x1111时、主器件接收到0x0888。  

下面是我的代码、我附上了 整个项目的.zip 文件。  

我错了什么操作、使得发送的第一个位似乎丢失了?

谢谢。

-乔

__________________________________

#define spi_slave mibspiREG5
#define spi_master mibspiREG3

Uint16 slave_tx[16]={0x2222、0x1111、0x2222、0x3333、0x4444、 0x5555、0x6666、0x7777、0x8888、0x9999 0xAAAA、0xBBBB、0xCCCC、0xDDDD、0xEEEE、 0xFFFF};
uint16 slave_rx[16]={0};

Uint16 MASTER_TX [16]={0x0123、0x0111、0x0222、0x0333、0x044、 0x0555、0x0666、0x0777、0x0888、0x0999、 0x0AAA、0x0BBB、0x0CCC、0x0DDD、0x0EEE、 0x0FFF};
uint16 master_rx[16]={0};

mibspiInit ();

while (1)
{
//将 TX 数据从 RAM 复制到 SPI 缓冲区,用于从器件和主器件
MibspiSetData (SPI_SLAVE、0、SLAVE_TX);
mibspiSetData (SPI_MASTER、0、MASTER_TX);

//启动传输
mibspiTransfer (SPI_SLAVE、0);//将等待 CS/置位
mibspiTransfer (SPI_MASTER、0);//开始传输

while (!(mibspiIsTransferComplete (SPI_MASTER、0));
mibspiGetData (SPI_MASTER、0、MASTER_Rx);

//检查从器件是否已完成--是否应该是主器件已完成,是否不需要检查?
while (!(mibspiIsTransferComplete (SPI_slave、0));
mibspiGetData (SPI_SLAVE、0、slave_Rx);

 e2e.ti.com/.../0181.SPI_5F00_SLAVE.zip

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

    更新: 通过单击主从器件的"MIBSPIx 数据格式"选项卡中的"Clock Phase"字段、

    但仅在1MHz 时钟、10MHz 时钟的第一个值不正确。

    为什么它可以使用一个时钟相位、而不能使用另一个时钟相位?  

    为什么慢速速度可以、但速度不快?

    也许我还没有解决根本问题?

    感谢您的任何帮助和/或解释。

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

    您好、Joe!

    您能否用压缩这个文件来附上完整的项目?

    这将有助于我轻松调试您的问题。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    请参阅随附的.zip 文件。   

    配置后、MASTER_TX 缓冲区第一个值不正确。

    非常感谢!

    此致、

    -Joee2e.ti.com/.../SPI_5F00_SLAVE_5F00_2Nov2023.zip

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

    您好、Joe!

    感谢您分享代码、我现在开始调试您的代码、并会尽快提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    您好、Joe!

    刚才、我测试了您的代码、也能看到您在最后提到的问题。

    我想进一步调试它、以找出路由原因并尽快更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Joe!

    我在度假、没有机会进一步调试该问题。

    我将在本周五返回办公室、并尽快尝试提供更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Joe!

    芯片选择激活后、从器件似乎预期会有一些延迟。

    我做了一些小的修改、如下所示:

    我刚刚启用;芯片选择激活以发送延迟。 之后、我能够正确接收数据。

    我将在此处附上经测试的代码、请测试并更新状态。

    e2e.ti.com/.../SPI_5F00_First_5F00_Bit_5F00_Missing_5F00_Issue_5F00_LC4357.zip

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    是的、解决了这个问题!!   

    我在时钟处于1MHz 和10MHz 且 芯片选择激活时进行了测试、以发送起始值= 8、并且两个测试都成功。  

    非常感谢!! :-)

    此致、

    -乔