串口DMA下 HalUARTWrite 问题咨询
时间:10-02
整理:3721RD
点击:
亲们,
大家有没有遇到这样的情况,我用的TI 的CC2540,用DMA发的数据包,连续这样写两包同样的数据,第二包的第一个byte会丢掉,好奇怪的现象啊!
HalUARTWrite(HAL_UART_PORT_0, ble_To_scale_Serial, ble_To_scale_Serial[1]);
HalUARTWrite(HAL_UART_PORT_0, ble_To_scale_Serial, ble_To_scale_Serial[1]);
需要延时!
注意查询发送状态标志!
大秦,
您好!
Halwrite 这个函数应该只是写到缓存里面啊,后面是由DMA自己搬到UART的吧。
你这种现象一般是怎么处理的呢?
没遇到过这样的现象。你是不是在POWER_SAVING的情况下发送的呢?
开启了POWER_SAVING,但是只要一次一包包地发,是没问题的;
但连着发2包就有问题了,连着3,4,5包好像又没问题。追踪过dmaCfg这个结构体,需要发的数据包也都放到缓存里了
你试试,在第一次打印之前把电源强制为osal_pwrmgr_device( PWRMGR_ALWAYS_ON );看看是不是电源的这个原因。
另外,在初始化之后随便启动一个周期性事件,避免CPU进入到PM3模式。