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.

[参考译文] CCS/TM4C1290NCZAD:每个字节后的 SPI#39;s 芯片选择

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/658656/ccs-tm4c1290nczad-spi-s-chip-select-after-each-byte

器件型号:TM4C1290NCZAD
主题中讨论的其他器件:TM4C123

工具/软件:Code Composer Studio

您好!

我使用以下代码发送 SPI 消息:


char Msg[5]={1、2、3、4、5}; 
char *p = Msg;
// //配置 SSI。 // ROM_SSIConfigSetExpClk (SSI2_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_MODE 0、SSI_MODE_MASTER、1000000、 8); // //启用 SSI 模块。 // SSIEnable (SSI2_base); 对于(i=0 <Size;i++) { SSIDataPut(SSI2_BASE, *p); while(SSIBusy(SSI2_BASE)){}; p++; }

我尝试发送5个字节。  

但是、根据连接到芯片选择(CS)线路的示波器、CS 将在每个字节后变为"0"。

它应在第一个字节之前和最后一个字节之后下降。

请提供帮助吗?

谢谢、

Zvika   

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

    您好、Zvika、

     首先、您不能像在语句 ROM_SSIConfigSetExpClk (SSI2_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、 8);SysCtlClockGet () API 用于 TM4C123器件、而不是 TM4C129器件。 请参阅 TivaWare 示例。 希望这是问题所在。  

     您应该执行如下操作。

      ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |

                       SYSCTL_OSC_MAIN |

                       SYSCTL_USE_OSC)、25000000);

      SSIConfigSetExpClk (SSI0_BASE、ui32SysClock、SSI_FRF_MOTO_MODE_0、

               SSI_MODE_MASTER、1000000、8);

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

    您好、Charles、

    我已经尝试过您的解决方案。  问题没有解决。  

    为了解决这个问题、我将 SSI2的 CS 引脚配置为简单的输出 GPIO。

    在发送第一个字节之前、我将该 GPIO 引脚设置为"0"。  

    在发送最后一个字节后、我将该引脚设置为"1"。

    不确定这是一种巧妙的解决方案。

    谢谢、

    Zvika  

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

    您好、Zvika、

    [报价用户="Zvi 已格式"]每个字节后 CS 将为"0"[/报价]

     您的意思是 CS 在每个字节后将变为"0"。 我可以同意 CS 在每个字节后变为高电平。 在每个字节传输期间、CS 应该为低电平。 或者、您正在寻找 CS 在第一个字节到 N 个字节之间保持低电平、并在完成最后一个字节后将 CS 置为高电平。 您能否展示您的示波器捕获?

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

    我希望 CS 在发送第一个字节到 N 个字节之前保持低电平、并在完成最后一个字节后将 CS 置为高电平。
    这是 SPI 从器件所需的。

    谢谢、
    Zvika
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Zvi、
    我认为您需要使用 SSIAdvModeSet()将 QSSI 模块置于高级模式,然后在传输过程中使用 SSIAdvFrameHoldEnable() API 来保持 CS。 请参阅 QSSI 高级模式的数据表。 请注意、在高级模式下、您只能进行8位传输。 请尝试一下、看看它是否会有所不同。