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.

CC430F6137单步调试能进RF接收中断,全速运行则进不了RF接收中断



降低系统主频,也没作用

  • Felix Zhang1, 针对这个情况,有以下几个建议,你可以试试。

    1.你试试看看是不是哪里需要增加延时, 单步调试可能给了足够时间;

    2. Update一下CCS 或者IDE试试。

  • 在哪里加延时呢?

    测试情况是,一收一发两个模块,发射端每秒发送一个无线数据包。在接收端的模块上使用JTAG在线调试程序。

    在RF接收中断里设置了一个断点,全速运行时,始终进不了接收中断;暂停程序运行几秒,再点全速运行按钮让程序继续运行,则可以进到RF的接收中断处理程序里面的断点。

    CCS和IAR都是最新版本的,在这两个IDE上现象是一样的。

  • 你这种现象,还真不知在哪里加延时。请问不连debugger运行时,可否进行RF接收?就是不连debugger,上电让程序自己运行时,能否进入RF接收中断?

  • 那如果在线调试,设置断点,进入接收中断后,接收到的数据正确否?先看看链路是否真的连通了。

  • 这样收到的数据是正确的。

    按照当前的状况,我觉得比较合理的解释是,MCU暂停的时候,RF确实是收到了无线数据,并且置位了对应的中断标志位,MCU恢复运行后,触发RF接收中断。

    但是在全速运行时,不知是中断标志位没有被置位,还是其他什么原因,没有触发接收中断。

  • 看样子,感觉是MCU一直运行时,由于某种原因,触发不了接收中断。一旦暂停MCU后,再运行MCU时,即可触发接收中断。

    1. 你调试看看,在一直运行的情况下,有没有接收到正确的数据?

    2. 有没有完整的示例,就是一直运行可以正常接收数据,进中断的例子?对比一下看看设置哪里有问题.

  • 你好:

    个人建议:

    1. 先禁止全局中断;

    2. 改为查询方式,一直查询中断标志位,看中断标志位能否置位;

    3. 如果中断标志位能正常置位,那么重新打开全局中断;

    4. 只留下单个中断来测试。

    这个就得一步一步来。

    谢谢。

  • 禁止全局中断之后,不断的查询对应的中断标志位。

    中断标志位一直没有被置位,程序暂停一会,再回复运行,中断标志位即可被置位。

    我之前遇到的情况一样。

  • 在程序一直运行时,有没有接收到数据?是一个都没有,还是接收不完整?我不太清楚你此处的接收中断是哪个外设的接收中断,是SPI吗?有没有用DMA?

  • 在程序全速运行时,进不了接收中断,因此收不到任何数据。

    这里所说的接收中断,是CC430中RF1A的RF1AIFG中断。不是SPI。

    程序里没有用到DMA。

  • Felix Zhang, 我没有调试过RF1A模块,所以不能给你有效的建议,我尝试寻找相关RF1A的code example, 找到下面相关参考内容,希望对你有帮助。你可以看看code example的设置,或者直接使用,对比来定位一下问题吧。O(∩_∩)O~

    1. RF1A Library for CC430F613x/F513x Sub-1GHz SoCs

    http://www.ti.com/lit/an/slaa460/slaa460.pdf

    http://www.ti.com/mcu/docs/litabsmultiplefilelist.tsp?sectionId=96&tabId=1502&literatureNumber=slaa460&docCategoryId=1&familyId=342

    2. CC430 Wake-On-Radio Functionality (在下面文档中,可点击直接下载对应的code example)

    http://www.ti.com/lit/an/slaa459a/slaa459a.pdf

    3. Wiki--下链接中也有对应的代码下载

    http://processors.wiki.ti.com/index.php/Synchronous_%26_Asynchronous_Communication_-_CC430

  • 之前试过示例代码,使用示例代码确实是没有问题的。

    现在一直比较疑惑的就是,我的代码在5137上运行都很正常,但是到6137上就不正常的。

  • 我的代码和示例代码对RF的配置基本是一样的,只不多设置了TX结束后自动切换到RX。

  • The CC430 RF_Examples include the following projects:

    1. Fixed_GT_FIFO -- Packet length is fixed and greater than FIFO size (64 bytes)
    2. Fixed_LT_FIFO -- Packet length is fixed and less than FIFO size (64 bytes)
    3. Variable_GT_FIFO -- Packet length is variable and greater than FIFO size (64 bytes)
    4. Variable_LT_FIFO -- Packet length is variable and less than FIFO size (64 bytes)
    5. Asynchronous_Communication -- RF TX/RX in asynchronous mode, internal connections to timerA
    6. Synchronous_Communication -- RF TX/RX in synchronous mode, internal & external connections to timerA

    使用第2种程序例程应该是没有问题的。