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.

[参考译文] RTOS/ADS1292:ADs1292 DRDY中断响应时间

Guru**** 2545010 points
Other Parts Discussed in Thread: ADS1292, CC2640, BLE-STACK, SYSBIOS

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/633054/rtos-ads1292-ads1292-drdy-interrupt-response-time

部件号:ADS1292
“线程”中讨论的其他部件: CC2640BLE-STACKSysBIOS

工具/软件:TI-RTOS

嗨,当我使用ads1292时,遇到了问题。  ads1292采样率为4K, CC2640 SPI数据速率为1Mbps。  我读取每3个/DRDY 中断的最后一个/DRDY中断数据。

当ads1292 /DRDY pin 准备就绪时,我使用SPI DMA中断获取数据。 通常,我在/DRDY中断10-90US之后发现cc2640读取数据,但有时中断响应时间为220-230us,此时读取数据出错。 由于/DRDY信号 每周期250US,在cc2640读取时间内,  发生了另一个/DRDY中断。  /DRDY在  cc2640 SPI第一个SCLK下降边缘 时变为HIGH (高)。

以下是 逻辑annalyser的截取结果。

1.如何缩短中断响应时间<I use TI-RTOS for BLE stack>?

2.如何处理另一个/DRDY在读取时间内准备就绪? <红色部分>

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

    1.中断延迟是系统中最长潜在关键部分的函数。 (加上中断调度的一些开销,等等)。 它通常基于BLE堆栈。

    2.您可能会发现零延迟中断,但请注意,这些中断不能调用任何BIOS API。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!  我还有一些问题。

    中断向量表:

    2.0003万FE4 重置 条目

    0.7649万 NMI  条目

    1001CA01  

    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA01
    1001CA3F PENDSV 入口   
    1001CA01
    1001C89D GPIO输入
    1001CA01
    1001C89D
    1001CA01
    1001C89D
    1001CA01

    程序正在以硬件默认中断优先级运行。  因此,只有PENDSV中断优先级高于GPIO中断。  

    我通过以下指令集获得了优先级"

    uPriGroup = IntPriorityGroupingGatet();             //uPriGroup = 7
    uPendSv = IntPriorityGet (FAULT_PENDSV);       //uPendSv  = 32
    uPriority = IntPriorityGet (INT_EDGE_DETECT);   //uPriority   = 224

    当我 使用函数 IntPrioritySet (INT_EDGE_DETECT, INT_PRI_LEVEL0)时 ,master将数据按BLE发送到从属设备,从属设备已损坏,并且发生故障。  

    我尝试使用函数 IntPrioritySet (INT_EDGE_DETECT, INT_PRI_Level1), Master通过ble向从属发送数据,从属设备工作正常,但从ads1292读取的数据是错误的。

    我真的很困惑,如何减少中断延迟和设置中断优先级?  是否可用于提高中断优先级?

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

    您好,

    如果您将TI-RTOS与BLE-Stack配合使用,则应由HWI模块管理中断优先级。  

    例如,如果您使用PIN驱动程序捕获中断,则可以通过修改主板文件中的以下结构来配置中断优先级:

    const PINCC26XX_HWAttrs PINCC26XX_hwAttrs ={
    .intPriority =~0,
    .swiPriority = 0
    };

    您可以在此处找到有关HWI模块以及内核如何管理中断的更多信息:

    Docs/tirtos/SysBIOS/docs/CDOC/index.html (相对于CC2640R2 SDK安装根目录)。 特别是 在ti.SysBIOS.family.arm.m3.Hwi模块部分。

    但是,只有在使用零延迟中断时,设置中断优先级才会有所帮助。

    这些是禁用HWI时将运行的唯一中断类型。 我再次警告,此类中断在功能上受到限制,因为不能从那里调用BIOS API。

    关于中断延迟,正如我前面提到的,中断延迟是应用程序中最长关键部分的函数。

    关键部分有两个来源(调用hwi_disable()的位置)

    1.堆栈通过 iCall_enterCSImpl()使用的关键部分。 这些问题由实施解决,不能更改

    2.关键部分使用您的应用程序,您可以尝试构建代码以减少这些关键部分。

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

    谢谢!