微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 为什么打开这个宏POWER_SAVING,串口就无法输出?

为什么打开这个宏POWER_SAVING,串口就无法输出?

时间:12-23 整理:3721RD 点击:

为什么打开这个宏POWER_SAVING,串口就无法输出?

POWER_SAVING打开了低功耗。32M晶振停振,所有外设不工作,除了sleeptimer。

本来BLE体现的就是低功耗,现在想要低功耗,但串口却使用不了。那这个低功耗又有什么用呢?难道用了低功耗,芯片的其他功能就不能使用了吗?

你在BLE-STACK1.3.1所有文件搜索一下POWER_SAVING,可以看到对串口有一些处理,基本思路,是串口发送端需要通过一个引脚使用外部中断来唤醒睡眠。

据你所知,哪家的低功耗,在进入睡眠还开着外设啊?你需要通过外部中断或定时事件,来唤醒MCU。

我串口用的是DMA模式。

  if (DMA_PM)   {    

    // Setup GPIO for interrupts by falling edge on DMA_RDY_IN.    

    PxIEN |= DMA_RDYIn_BIT;     //使能P0_4引脚中断

    PICTL |= PICTL_BIT;               //P0端口下降沿触发中断

    HAL_UART_DMA_CLR_RDY_OUT();    

    PxDIR |= DMA_RDYOut_BIT;  

 }

你说的“串口发送端需要通过一个引脚使用外部中断来唤醒睡眠”,指的是这段代码吗?

那我要先给CC2540的P0_4引脚一个下降沿,然后才通过串口给CC2540发送数据吗?

BLE stack 1.4.2.2,当定义POWER_SAVING后,SimpleBLEPeripheral收到主机发来的数据,想通过NPI_WriteTransport()串口输出,但是发现数据在DMA缓冲区中,没有发送到串口,这是怎么回事,有什么解决方法吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top