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.

[参考译文] TMS570LC4357:有关 MibSPI 的问题。

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1114007/tms570lc4357-question-about-the-mibspi

器件型号:TMS570LC4357

您好!

以下是我的配置:

描述:

我想与外部闪存通信。 首先、我将传输函数(mibspiSetData()和 mibspiTransfer())的指令、然后 我希望接收 外部闪存发送给我的数据。

问题是我没有收到数据。  

  1. 使用函数(mibspiGetData())仍然让 CS 引脚保持低电平?
  2. 我希望收到24位数据,天气情况下,我应该调用函数(mibspiGetData()) 3次?

期待您的回答。

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

    uint16_t data[4]={0};
    uint16_t command[1]={0x9F};
    uint8_t i;
    uint32_t ID;

    mibspiSetData (mibspiREG4、0、command);

    mibspiTransfer (mibspiREG4、0);

    while (mibspiIsTransferComplete (mibspiREG4、0)= 1){
    C (mibspiREG4、0、data);

    ID|=DATA[0]<<24;
    mibspiGetData (mibspiREG4,0、data);
    id=data[1]<<16;
    mibspiGetData (mibspiREG4,0、data);
    ID|=DATA[2]<<8;
    mibspiGetData (mibspiREG4,0、data);
    ID|=DATA[3];

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

    根据您的示例、命令是1个16位数据。  

    当您设置 MibSPI TX 缓冲区(配置中有8个缓冲区)时、第一个缓冲区填充为0x9F、但第二个到第七个缓冲区是 SRAM 中的未知值。 这7个 unknow 值是否会影响闪存的响应?  

    DATA[4]={0};-->我想 命令0x9F 的返回次数是4个16位值。 命令和返回数据之间是否需要延迟? 如果闪存只返回4个值、那么为什么您的 define TG0=8 buffer?

    我的建议:

    1.使用 SPI 模式而不是 MibSPI 模式

    2.定义 charlen=8而不是16

    3.定义命令[4]={0x9F、0x0、0x、0、0x0};数据[4]={0};

    4.检查闪存设备是否接受 CSHOLD。

    4. 在多项模式中使用 spiTransmitAndReceiveData(), 在中断模式中使用 spiSendAndGetData()以获取 dat

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

    感谢您的回答!