CC2531 USB CDC 运行一段时间之后会断开,之后必须重新拔USB或者芯片复位才能重新正常,不然PC上的端口一直显示被占用。
这样的话一些长时间使用的设备就很麻烦。
Alvin Chen:
请使用下面的固件测试,也有可能是您的系统的问题,在使用CC2531 最为usb dongle 未发现此问题.
www.ti.com/…/getliterature.tsp
sheng li:
回复 user6069081:
不是是我自己用CC2531做的硬件
sheng li:
回复 Alvin Chen:
USB外面有一个1.5米的延长线。代码使用的是MAC层代码包。
Alvin Chen:
回复 sheng li:
我怀疑是你的硬件的问题,我在使用CC2531USB Dongle时没有出现你这样的问题,你可以用ZNP或者下面的demo 去测试一下。
sheng li:
回复 Alvin Chen:
好的,还有一个问题,打开双串口时,一段时间之后,双串口都有数据接收和发送,一段时间之后就卡死。回调是同一个函数。下面是初始化代码。
#define MASTER_UART HAL_UART_PORT_0
#define SLAVE_UARTHAL_UART_PORT_1
/******************************************************************************************************************************************************************************************************************/
void SerialApp_Init(void)
{halUARTCfg_t uartConfig;
if(USE_MAX_UART > 0){uartConfig.configured= TRUE;// 2×30 don't care – see uart driver.uartConfig.baudRate= HAL_UART_BR_38400;uartConfig.flowControl= FALSE;uartConfig.flowControlThreshold = 64;// 2×30 don't care – see uart driver.uartConfig.rx.maxBufSize= 64;// 2×30 don't care – see uart driver.uartConfig.tx.maxBufSize= 64;// 2×30 don't care – see uart driver.uartConfig.idleTimeout= 6;// 2×30 don't care – see uart driver.uartConfig.intEnable= TRUE;// 2×30 don't care – see uart driver.uartConfig.callBackFunc= SerialApp_CallBack;HalUARTOpen (MASTER_UART, &uartConfig);if(USE_MAX_UART > 1){uartConfig.configured= TRUE;// 2×30 don't care – see uart driver.uartConfig.baudRate= HAL_UART_BR_38400;uartConfig.flowControl= FALSE;uartConfig.flowControlThreshold = 64;// 2×30 don't care – see uart driver.uartConfig.rx.maxBufSize= 64;// 2×30 don't care – see uart driver.uartConfig.tx.maxBufSize= 64;// 2×30 don't care – see uart driver.uartConfig.idleTimeout= 6;// 2×30 don't care – see uart driver.uartConfig.intEnable= TRUE;// 2×30 don't care – see uart driver.uartConfig.callBackFunc= SerialApp_CallBack;HalUARTOpen (SLAVE_UART, &uartConfig);}}
}
Alvin Chen:
回复 sheng li:
参考下面如何使用UART:
e2echina.ti.com/…/526637
不建议在一个回调中处理,可能会有出现中断不能及时释放的等问题。
sheng li:
回复 Alvin Chen:
看代码不是所有的接收回调都是在主循环中查询吗,没有放到中断中处理啊。
Alvin Chen:
回复 sheng li:
不懂你什么意思,请看hal_uart.c
sheng li:
回复 Alvin Chen:
Hal_ProcessPoll->HalUARTPoll-> HalUARTPollDMA -> dmaCfg.uartCB 我看代码是这么一个调用过程,没有看到在中断中处理,您上面说“不建议在一个回调中处理,可能会有出现中断不能及时释放的等问题。”