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:传感器和 Tiva 中的 SSI 接口

Guru**** 2034120 points
Other Parts Discussed in Thread: EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva

器件型号:TM4C1290NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

您好!

我想使用 SSI 接口以及 TM4C1290和传感器读取数据。

Temposonics R 系列

http://www.mtssensor.co.jp/en/products/industrial-sensors/r-seriesv.html

使用 QSSI 模块"德州仪器同步串行帧格式"是否可行?

"德州仪器同步串行帧格式"为16位、但我担心传感器的输出数据为24至26位。

如果可以使用其他 QSSI、请告诉我。

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

    您好!

     TM4C129应该能够处理这个问题。 您可以将字符宽度配置为12位、并一次发送两个12位24位。 或者配置13位字符宽度并一次发送两个13位、共26位。   

     在高级模式下运行的 QSSI 模块可以支持这种情况。 您将配置 FSSHLDFRM (FSS 保持帧)、以便整个帧的芯片选择为低电平。  

     

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

    您好、Charles

    传感器的 SSI 格式。

    (1)是否需要使用帧保持功能才能使用上述传感器?

    (2)是否可以识别使用此传感器的格式是飞思卡尔 SPI 帧格式?

    (3)是否有任何可用作参考的示例代码?

    谢谢、

    科基

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

    您好、Koki-San、

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3735593 #3735593"]

    (1)是否需要使用帧保持功能才能使用上述传感器?

    [/报价]

    我认为是这样。 如果您不执行 HOLD、FSS (芯片选择)信号将在帧结束时取消置位。 例如、如果您执行两个12位的背靠背操作、那么在12位帧的末尾、FSS 将变为高电平、然后在下一个12位传输中变为低电平。 请注意、您不需要使用 FSS。 您可以轻松使用 GPIO 进行芯片选择。  

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3735593 #3735593"]

    (2)是否可以识别使用此传感器的格式是飞思卡尔 SPI 帧格式?

    [/报价]

    是的、这是首选格式。  

    [报价 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3735593 #3735593"](3)是否有任何可用作参考的示例代码?

    请参阅 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\SSI_quad_mode example。 查看  MAP_SSIAdvFrameHoldEnable()被调用以启用帧保持,  MAP_SSIAdvDataPutFrameEnd()使 FSS 信号无效。  

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

    您好、Charles

    感谢您的回答。

    您的回答中有一个新问题、因此我将向您提出一个问题。

    具体而言、使用了以下传感器。

    https://www.temposonics.com/portals/MTS_Sensors/documents/R-Series/Data_Sheet_R-Series_RP_RH_SSI_550989_EN.pdf

    (1)上述传感器似乎没有 FSS (芯片选择)。 是否可以与 SSI 通信?

     1 (MCU)与1 (传感器)通信是否不需要 GPIO (芯片选择)?

    [引用 userid="93620" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3736082 #3736082">您可以轻松地使用 GPIO 进行芯片选择。  [/报价]

     

    (2) SSI 通信的传输"连续背靠背传输"是否在 UG 中描述?

    (3)如果传感器的数据长度为25位、则将连续传输12位+ 13位。 上述理解是否正确?

    谢谢、

    科基

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

    您好!

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3739153 #3739153"](1)上述传感器似乎没有 FSS (芯片选择)。 是否可以与 SSI 通信?[/报价]

    如果您的从器件不需要片选、那么您只需将其保留为"不需要"。 有些器件需要芯片选择、有些器件不需要。 在您的情况下、您只需要根据 UG 提供 CLK 和数据。  

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3739153 #3739153"](2)是 UG 中描述的 SSI 通信"连续背靠背传输"?

    我不熟悉传感器器件。 您应咨询传感器供应商进行确认。 但根据 UG、它不支持连续的背靠背传输。 从我所看到的情况来看、您至少需要暂停16us、然后才能开始下一次传输。 再说一次、这是您的传感器、我建议您咨询传感器供应商。 从 MCU 的角度来看、它可以执行连续传输。  

    [引用 userid="465179" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3739153 #3739153"]

    (3)如果传感器的数据长度为25位、则将连续传输12位+ 13位。 上述理解是否正确?

    [/报价]

    这是一个非常奇数的字符长度。 您需要先进行12位传输、然后需要对 SSI 模块字符长度进行重新编程、以实现接下来的13位长度。 12位和13位之间将存在一些延迟。 您需要与传感器供应商核实允许的延迟量。  

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

    您好、Charles

    我想与传感器供应商确认(2)和(3)。

    关于(1)、请允许我检查一下以防万一。

    请告诉我在 FSS 引脚未使用时如何连接它。

    谢谢、

    科基

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

    您好!

     正如我在上次答复中所说的、如果您的传感器器件不需要 FSS、则无需连接 FSS。 您不会在 MCU 上配置 FSS 引脚。 您可以为 GPIO 重新使用 FSS 引脚、也可以将其保持打开状态。  

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

    这是第一次。
    我正在开发"SSSI-SENSOR-2ch-IF 电路板"。
    "Koki"代表我向您提出了一个问题。

    我也有疑问。

    TM4C1290。
    我想将同一个 SSI 模块用于 CLK 输出和  一个传感器的数据接收。
    有可能吗?
    进行了比较
    问题1.
    函数"void SSIConfigSetExpClk ()"的参数"ui32Mode"是否为"SSI_MODE_MASTER"?
    问题2.
    函数"MAP_SSIAdvModeSet ()"的参数"ui32Mode"是否为"SSI_ADV_MODE_LEGACT"?

    请告诉我。
    INO
    ----
    到 Koki
    阿里加图戈扎伊马西塔。
    INO

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

    您好!

    [引用 userid="379197" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3751183 #3751183)]我想使用相同的 SSI 模块为  一个传感器提供 CLK 输出和数据接收。
    有可能吗?[/报价]

    是的、这是可能的。 您不连接 TX 引脚。 MCU (主器件)将仅驱动 CLK 并从 RX 引脚接收数据。

    [引用 userid="379197" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3751183 #3751183]Q1。
    函数"void SSIConfigSetExpClk ()"的参数"ui32Mode"是否为"SSI_MODE_MASTER"?[/quot]

    你是对的。

    [引用 userid="379197" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3751183 #3751183]Q2。
    函数"MAP_SSIAdvModeSet ()"的参数"ui32Mode"是否为"SSI_ADV_MODE_LEGACT"?[/QUERT]

    是的、我认为您可以使用  SSI_ADV_MODE_LEGACY。 我先前建议使用高级模式。 再次阅读数据表、请注意、高级模式只支持8位传输。 因此、如果您要传输24位数据、则可以分成三个8位数据传输。 如果这是用例、则选择 SSI_ADV_MODE_READ_WRITE。 但是、如果要进行两次12位传输、则需要保留 SSI_ADV_MODE_LEGACY_REGACY_DE-STACK_REGACDIVE_IN、这是默认设置。  

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

    我会尝试。
    谢谢、
    INO

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

    在读取该线程之后 、有些东西会脱颖而出。

    一--传感器的数据表显示每个数据位都是由时钟的上升沿驱动的。 "SPI"通常使用时钟的下降沿驱动输出位、这些位在时钟的上升沿被捕捉。 您需要确保 TI USART 或 SPI 模块捕获位时钟的时钟边沿正确!

    二--传感器数据表没有给出任何设置和保持时间。 它的唯一时序是作为电缆长度函数的波特率。 这也是在时钟下降沿捕获位的另一个原因。

    三--数据帧中的位数可以是非标准的,除了24位外,还可以是25位或26位。 此外、数据可以是二进制或格雷码。 这两种情况都取决于订购的确切器件。

    现在、如果我要在 TM4C 中实现这一点、我不会费心尝试使微控制器的同步串行端口正常工作。 我最近建立了一个连接该 cruddy HX711应变仪放大器/数字转换器芯片的接口、该接口具有24 (或25或26)位串行接口、看起来与该传感器的接口非常相似。

    我想出了一个"更好"的位。 它使用两个引脚。 数据引脚是一个 GPIO、配置为输入。

    我用一个由 PWM 驱动的定时器 CCP 输出来生成时钟。 定时器装载值设置时钟周期。 计时器匹配值设置占空比、因此如果匹配值是计时器负载值的一半、则可获得50%占空比。

    这是一个巧妙的部分。 将计时器配置为在计时器输出的下降沿中断。 这是您要在其上捕获输入位的时钟的边沿。

    设置另一个计时器、以使传感器读取速度加快。 当该计时器到期时、启用时钟计时器。 这将启动班次流程。

    在时钟计时器 ISR 中、您可以跟踪已移入的位数以及传入位的移位寄存器。 对于每个传入位、将寄存器向左移位、读取数据位 GPIO、然后或将该位与移位寄存器一起更新移位器。 如果您刚刚读取了数据帧中的最后一位、请设置主循环可以读取的全局标志、并禁用 PWM 计时器、以便时钟停止。 主循环可以随意读取结果。

    所有这些都比试图强制 SSI 外设执行非标准且奇怪的操作容易得多。 祝你好运。

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

    您好、Andy
    感谢您的好主意!

    CPU 的 CLK 输出和传感器的 CLK 输入电反相。
    捕获的数据。
    但是、由于没有数据、"1"的捕捉被忽略。
    由于传感器数据长度这次是24/25位
    我将使用设置13bitX 2次= 26位进行读取。
    我将很快对其进行调试。
    INO