TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

Yue TANG:

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

Qin Daohong:

回复 Yue TANG:

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

Yue TANG:

回复 Qin Daohong:

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

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

Qin Daohong:

回复 Yue TANG:

我串口用的是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发送数据吗?

yongguang liu:

回复 Yue TANG:

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

赞(0)
未经允许不得转载:TI中文支持网 » 为什么打开这个宏POWER_SAVING,串口就无法输出?
分享到: 更多 (0)