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.

[参考译文] MSP430FR2512:IRQ 的负边沿或正边沿上的延迟和 CapTIvate 触发器?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/991062/msp430fr2512-delay-and-captivate-trigger-on-negative-or-positive-edge-of-irq

器件型号:MSP430FR2512

大家好、

我使用的是 CapTIvate register_I2C 接口、具有用于通知主机 MCU 的 IRQ 功能。 我使用实用程序函数 I2CSlave_setRequestFlag()执行此操作(似乎是这样做的)。

我的问题是、在主机 MCU 上、我在下降沿触发(线路保持高电平并被拉至低电平、因此下降沿是我可以收到通知的最严重的情况) 但我注意到、在我的请求和响应 i2c 请求之间、我需要添加~ 30ms 的延迟才能获得有效的传感器数据包。  

切换到正边沿可以消除延迟。  

问题:  

1) 1)应在哪个边沿触发?

2) 2)请求/响应之间的预期延迟是多少?

3) 3)我应该等待、还是应该拉动 i2c 响应、直到获得有效的校验和?

4) 4)我是否应该做其他我不做的事情?

将计时代码输入到我看来天生就很脆弱、因此我希望有人能告诉我可以做些什么来使响应尽可能快、同时又很可靠。 我的时钟速度为100kHz、我(目前)正在 i2c 线路上使用内部上拉电阻器。  

谢谢!!

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

    您好!

    MSP430FR2512上的 IRQ 代码使用__DELAY_CYCLES ()在高电平到低电平转换和低电平到高电平转换之间添加一个延迟,以建立一个用于通知主机的已定义 IRQ 脉冲宽度。 脉冲宽度必须足够宽、以便主机检测到它。

     当您在第一次(从高到低)转换时触发主机时、主机向 MSP430FR2512发送 I2C 请求。 但是、MSP430FR2512的 CPU 仍在执行__delay_cycles ()函数、然后才能处理来自主机的 I2C 命令。 这就是在主机上添加延迟的原因。

    当在第二个(低电平到高电平)转换时触发时、MSP430FR2512已完成执行__DELAY_CYCLES ()并且可以立即处理来自主机的 I2C 命令。 这就是为什么这种情况不需要主机上的延迟的原因。

    这两种方法基本上都在做同样的事情。 如果您希望获得尽可能快的响应,我会在第二次(从低到高的转换)上触发,并尝试将__delay_cycles ()计数减少到仍能确保主机检测到 IRQ 脉冲的值。

    CCS/MSP430FR2522:IRQ 在批量 I2C 中可用、但在 REGISTER_I2C 中不可用

    此致、

    James

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

    尊敬的 James:

    感谢您提供如此准确的答案。 非常感谢!