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.

[参考译文] TM4C1290NCPDT:SSI 26位 CLK

Guru**** 2537350 points
Other Parts Discussed in Thread: TM4C1290NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1028280/tm4c1290ncpdt-ssi-26bit-clk

器件型号:TM4C1290NCPDT

你好。

我使用 TM4C1290NCPDT 制作了 SSI 传感器2ch-IF 板。
当前正在调试。
为了从25位 SSI 传感器读取数据、CLK13位被 SSI 模块输出两次。
但是、正如 Charles 所担心的、13位 CLK 之间存在16us 或更高的延迟、无法连续读取正确的数据。
是否有办法通过持续发出26位 CLK 来读取数据?
CLK 可以是32位。
波形 CH1:CLK、CH2:传感器数据
电流编码如下。
----
SYSCLK = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_20MHz
(sysctl_OSC_main)|(sysctl_use_PLL)、20000000);

MAP_SSIAdvModeSet (SSI1_BASE、SSI_ADV_MODE_LEGACY_LEGACH);

MAP_SSIConfigSetExpClk (SSI1_base、SYSCLK、SSI_FRF_MOTO_MODE_0、
SSI_MODE_MASTER、90000、13);
while (!SysCtlPeripheralReady (SYSCTL_Periph_SSI1));

MAP_SSIEnable (SSI1_BASE);
while (map_SSIDataGetNonBlocking (SSI1_base、&d[0]));
for (i=0;i<2;i++)

MAP_SSIDataPut (SSI1_base、0);//out 13CLKS
MAP_SSIDataGet (SSI1_base、&d[i]);

----

INO

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

    您好!

     我对您的代码与波形有一些疑问。 在波形中、CLK 看起来就像您在 SPO=1和 SPH=0中。 但在代码中、您有  SSI_FRF_MOTO_MODE_0、其中 SPO = 0、SPH = 0。 您是否在电路板上实现了反转?

     我有一些建议:

     -不确定为何要在电路板上反转。 如果您在电路板上有反转、那么您可以将其移除吗? 删除后、您是否可以改用 SSI_FRF_MOTO_MODE_1。 结果是否会有所不同?

     -您的传感器有一个非常奇怪的长度供 SSI 模块支持。 在帧之间、SSI 模块将有一段不活动时间。 这是设计所固有的。 如果您的传感器无法容忍这种不活动、则需要使用不同的解决方案。  

     - 我建议您尝试 Bit-Bang 方法。  

      1:创建一个计时器、生成与 SPICLK 频率匹配的周期性中断。

      2.在中断 ISR 中、切换模拟 SPICLK 的 GPIO 引脚

      在中断 ISR 中、从传感器读取 SOMI (RX)数据引脚并向左移位一位。

      4.重复步骤1、进行2x26=52次仿真、以仿真传感器所需的26 SPICLK。  

     我认为 bit-bang 方法应该不难实现。  

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

    查尔斯
    我很抱歉让你感到困惑。
    CLK 波形不是器件端子上的波形。
    这是电反相的传感器输入端的波形。
    我更改了各种参数。
    但是、不活动时间不能小于22us。
    让我们尝试一下"bitbang method"。
    谢谢你。
    INO

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

    与器件端子处的波形进行比较。
    发现 PH1中没有非活动期。
    但是、第二个 CLK 边沿是数据更改点。
    我想在第一个 CLK 边沿捕获数据。
    如果它是 PH0、则会有一个无效周期。
    困难。

    INO