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:无法使用 SPI 仅传输一个字节的数据

Guru**** 2442090 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1291212/tms570lc4357-unable-to-transfer-only-one-byte-of-data-using-spi

器件型号:TMS570LC4357

您好!

我目前在我的项目中使用 TMS570LC4357作为主器件、将 CY15B102QN (FRAM)作为从器件。

我正面临一个问题、尝试从主设备发送0x06以在 FRAM 上启用写入、但遗憾的是、我的尝试到目前为止还没有成功。

我已经进行过在字节开头发送0x0006和结尾发送0x0600添加填充的实验。

尝试使用不同的从器件 S25FL512S (闪存)后、我发现 CS#需要在指令字节的第八位之后返回。 否则、它将无法正常工作。

这就是我询问是否存在使用给定代码通过 SPI 发送一个字节的方法。

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

    尊敬的 Stanislas:

    SPI CS 用于启用和禁用传输。 SPI 主器件将 CS 引脚驱动为0或1。 默认情况下、CS 在两次传输之间失效。

    TMS570器件上的 SPI 支持 CS 保持功能。 如果在控制 字段中设置了 CSHOLD 位、则在几个连续的数据字传输期间 CS 信号不会失效。

    CSHOLD 是 SPIDAT1寄存器的第28位:

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

    清除 CSHOLD 位后、CS 将在每次传输后取消置位。

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

    这不能解决我的问题、我仍在每次调用向传输函数发送两个字节的数据

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

    只使用一个字节(0x06)来启用写入操作。

    uint8_t txdata[1]= 0x06;

    spidat1_t dataconfig1_t;

    dataconfig1_t.CS_HOLD = true;//false;
    dataconfig1_t.wdel = true;
    dataconfig1_t.DFSEL = SPI_FMT_0;
    dataconfig1_t.CSNR = 0xFE;  // CS0

    spiInit();

    spiREG1->FMT0 &= 0xFFFFFFE0;
    spiREG1->FMT0 |= 0x00000008;  //charlen = 8位  

    spiTransmitData (spiREG1、&dataconfig1_t、1、txdata); //发送一个字节

    CS 应在发送0x08后置位、并在发送后取消置位。

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

    感谢您的帮助、它解决了我的问题