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.
您好!
我想使用 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
感谢您的回答。
您的回答中有一个新问题、因此我将向您提出一个问题。
具体而言、使用了以下传感器。
(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 的角度来看、它可以执行连续传输。
(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。你是对的。
[引用 userid="379197" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1010530/tm4c1290ncpdt-ssi-interface-in-sensor-and-tiva/3751183 #3751183]Q2。是的、我认为您可以使用 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