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

串口DMA下 HalUARTWrite 问题咨询

亲们,

大家有没有遇到这样的情况,我用的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]);

 

da qin zheng sheng:

需要延时!

注意查询发送状态标志!

Jacen Cao:

回复 da qin zheng sheng:

大秦,

您好!

Halwrite 这个函数应该只是写到缓存里面啊,后面是由DMA自己搬到UART的吧。

你这种现象一般是怎么处理的呢?

shaokai Lin:

回复 Jacen Cao:

没遇到过这样的现象。你是不是在POWER_SAVING的情况下发送的呢?

Jacen Cao:

回复 shaokai Lin:

开启了POWER_SAVING,但是只要一次一包包地发,是没问题的;

但连着发2包就有问题了,连着3,4,5包好像又没问题。追踪过dmaCfg这个结构体,需要发的数据包也都放到缓存里了

shaokai Lin:

回复 Jacen Cao:

你试试,在第一次打印之前把电源强制为osal_pwrmgr_device( PWRMGR_ALWAYS_ON );看看是不是电源的这个原因。

另外,在初始化之后随便启动一个周期性事件,避免CPU进入到PM3模式。

赞(0)
未经允许不得转载:TI中文支持网 » 串口DMA下 HalUARTWrite 问题咨询
分享到: 更多 (0)