微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC2540 keyfob 串口与DMA问题

CC2540 keyfob 串口与DMA问题

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

各位大神:

我使用SimpleBLEPeripheral程序想要验证下蓝牙4.0 BLE协议栈中的串口(使用DMA)应用,做了个实验,但是有问题,怎么发数据也发不出来,下面是我的代码:

在SimpleBLEPeripheral.c中添加:

unsigned char uartbuf[152];
static void rxCB(uint8 port, uint8 event)
{
HalUARTRead(0, uartbuf,19);
HalUARTWrite(0, uartbuf,19);
osal_memset( uartbuf,0,19);
}

在SimpleBLEPeripheral_Init()函数中添加:

halUARTCfg_t uartConfig;
uartConfig.baudRate = HAL_UART_BR_115200;
uartConfig.configured = TRUE;
uartConfig.flowControl = FALSE;
uartConfig.callBackFunc = rxCB;
HalUARTOpen(0, &uartConfig);

并且 我在keyfob上自己飞了串口线(使用串口0)。

但是怎么调都调不出来,我要是在options中加上HAL_UART = TURE就会提示warnning,说什么重复定义了(hal_uart和hal_key重复定义,并且在这个时候调试按右键,也无法广播,dongle无法搜索到),我要是不加这个宏,就在HalDriverInit()中发现有下面一段

/* UART */
#if (defined HAL_UART) && (HAL_UART == TRUE)
HalUARTInit();
#endif

也就是说不加入宏haluart就没有被初始化,同样运行也无法收到信息。大家有什么看法和建议给提下下~~

程序会报警告是因为:

定义了POWER_SAVING这个宏 ,定义了这个宏之后 , 就会把P0中断重新写一遍 ,然后就会报错

#if !defined( DMA_PM )
#if defined POWER_SAVING
#define DMA_PM                     1
#else
#define DMA_PM                     0

另外:

#if DMA_PM
/**************************************************************************************************
 * @fn      PortX Interrupt Handler
 *
 * @brief   This function is the PortX interrupt service routine.
 *
 * @param   None.
 *
 * @return  None.
 *************************************************************************************************/
#if (HAL_UART_DMA == 1)
HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR)
#else
HAL_ISR_FUNCTION(port1Isr, P1INT_VECTOR)
#endif


之前HAL_KEY就用到P0中断P0INT_VECTOR了

HAL_UART_DMA这个是1的  然后就悲剧的重定义了


但是将程序改了之后,使用HalUARTWrite()函数还是不可以~~~~~~~~~~~~

宏定义部分设置,
HAL_UART_DMA == 1

HAL_UART = TURE

DMA_PM==0,DMA_PM是关于串口低功耗,硬件流控制两个线部分的代码,如果用不着就设置为0.

或者

HAL_UART_DMA == 2

HAL_UART = TURE,这样避开了中断重定义。如果还不行,接着找原因。

P0SEL
P1SEL 
P2SEL

P0DIR 
P1DIR
P2DIR

P0 
P1 
P2 

也很可能是这几个寄存器的原因,并没有将uart设置为外设IO口,你看看寄存器的值和手册中的是否一致。

恩~   谢谢   ROSS

我之前又调了一下,我也是觉得是寄存器或者是宏的原因,使程序跳过了一些重要的配置

继续调中。。。。。。

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

网站地图

Top