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.

[参考译文] CC1350:实现(示例?) 使用 PIN 驱动程序代码的基于电平的中断

Guru**** 2552950 points
Other Parts Discussed in Thread: ADS1118

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/695231/cc1350-implementing-example-a-level-based-interrupt-using-the-pin-driver-code

器件型号:CC1350
主题中讨论的其他器件:ADS1118

是否有一个示例说明了如何使用现有的引脚驱动程序代码在 GPIO 引脚上创建基于电平的中断。

我从另一篇文章中了解到-这方面没有硬件支持-问题是某些引脚由现有的引脚驱动程序处理得很好、但我有一些引脚没有。

示例是来自 TI ADS1118 -数据就绪信号的竞态条件。  图42.

  www.ti.com/.../ads1118.pdf

要从该芯片读取 ADC 值-过程如下:通过 SPI 向 ADC 写入16位数据-在我的案例中为"单次触发模式"

在写入操作(16位数据)结束时、ADC 会使 MISO 引脚悬空、并且内部上拉电阻会使该引脚保持高电平。

当转换完成时、ADC 将这个引脚拉低、我希望 IRQ 用于这个引脚。

很明显、在传输期间、IRQ 应该被禁用、所以在传输结束时、IRQ 需要被重新启用。

比赛条件如下:

   在 SPI 传输结束时、在代码返回到主代码之前存在相当大/较长的延迟。

这个延迟是 TI 提供的驱动程序代码- SWI 处理、禁用 DMA 并完成这个过程。

   哇、所有的 DMA 功率都可以传输2个字节!!!! 有时是1字节!

到这返回到主循环时*和*,MOSI 引脚可以配置为 IRQ -它很晚-边沿*有时*已经发生,基于边沿的 IRQ 丢失。

这种情况下的解决方案似乎是对 PIN 驱动程序进行“手术”... 因此、有些东西可能是边缘的、有些可以是电平的

您能给我举一个使用现有 TI_RTOS 引脚驱动程序代码的示例吗?

谢谢。

   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BTW -很清楚-它不是*仅* TI 驱动程序代码,而是许多其它的事情,这些事情可能会发生,也可能不会发生。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Duane:

    没有可用的示例、因为实际上不支持 GPIO 上基于电平的中断。

    关于 SPI 传输和 DMA、如果您进行的传输很小、则最好改用轮询传输。 如果配置为阻塞模式、并且字节数低于板级配置文件中定义的 DMA 阈值、则由驱动器完成。 在这种情况下、如果仅传输单字节、则响应时间应更短。

    如果您只是为了捕捉信号的下降沿而迟到、您可以在尝试在 MISO 引脚上启用 IRQ 之前始终执行 GPIO 电平检查。 它可能如下所示:

    如果
    
    (!GPIO_readDIO (MISO)){
    //新数据
    SPI_TRANSFORT()
    }
    否则{//
    每隔几秒轮询一次,或以另一种方式处理等待
    (int i = 0;i < 10;i++){
    usleep(100);
    if (!GPIO_readDIO (MISO)){
    //新数据
    spi_transfer();
    中断;
    }
    }
    

    我会说、这可能比尝试将引脚驱动程序弯曲到 ADC 的意愿更容易、因为该引脚将由 SPI 驱动程序"拥有"。 最简单的方法是使用 GPIO driverlib 中的 GPIO_readDio (pinNumber) API、因为这样可以检查引脚的值、而无需涉及或处理任何驱动程序。