完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于我特殊应用,串口波特率需要设置为6000,所以就按照用户手册,计算了UXbaud=137,UxGCR=7. 添加到程序里面以后,用串口调试软件进行通信,数据总是出错的,串口调试软件为accessport,我已经验证串口调试助手是没有任何问题的,我在程序中修改如下:
static void HalUARTOpenDMA(halUARTCfg_t *config) [ dmaCfg.uartCB = config->callBackFunc; // Only supporting subset of baudrate for code size - other is possible. HAL_ASSERT((config->baudRate == HAL_UART_BR_9600) || (config->baudRate == HAL_UART_BR_19200) || (config->baudRate == HAL_UART_BR_38400) || (config->baudRate == HAL_UART_BR_57600) || (config->baudRate == HAL_UART_BR_115200) || (config->baudRate == HAL_UART_BR_6144)); if((config->baudRate == HAL_UART_BR_6144)) [ UxBAUD = 137; UxGCR = 7; else [ if (config->baudRate == HAL_UART_BR_57600 || config->baudRate == HAL_UART_BR_115200) [ UxBAUD = 216; ] else [ UxBAUD = 59; ] switch (config->baudRate) [ case HAL_UART_BR_9600: UxGCR = 8; break; case HAL_UART_BR_19200: UxGCR = 9; break; case HAL_UART_BR_38400: case HAL_UART_BR_57600: UxGCR = 10; break; default: // HAL_UART_BR_115200 UxGCR = 11; break; ] ] if (DMA_PM || config->flowControl) [ UxUCR = UCR_FLOW | UCR_STOP; // 8 bits/char; no parity; 1 stop bit; stop bit hi. PxSEL |= HAL_UART_Px_CTS; // Enable Peripheral control of CTS flow control on Px. ] else [ UxUCR = UCR_STOP; //2013年8月9日15:44:17 修改 为了适应iso7816 ] UxCSR = (CSR_MODE | CSR_RE); if (DMA_PM) [ PxIFG = 0; PxIF = 0; IENx |= IEN_BIT; ] else if (UxUCR & UCR_FLOW) [ // DMA Rx is always on (self-resetting). So flow must be controlled by the S/W polling the // circular Rx queue depth. Start by allowing flow. HAL_UART_DMA_SET_RDY_OUT(); PxDIR |= HAL_UART_Px_RTS; ] #if HAL_UART_TX_BY_ISR UTXxIF = 1; // Prime the ISR pump. #endif ] 其它规范的波特率如1200,2400,4800等均没有问题,一旦设置为特殊波特率,就出现问题。 请TI工程师帮助下!谢谢! |
|
相关推荐
4 个讨论
|
|
請教一下,我用 TI CC2541 BLE 1.3.2 protocol stack, 並且用了 http://processors.wiki.ti.com/index.php/SimpleBLEPeripheral_SerialInterface 當範本參考,加入了 serial port 的功能,在 115200 bps 的時候傳送出來的資料是正確的,但是 19200 bps 就有一堆錯誤,不知道可能是哪裡有問題?謝謝!
我的 e-mail 是 alberthuang314@gmail.com 這是我設定的 code: HalUARTInit(); // configure UART uartConfig.configured = TRUE; uartConfig.baudRate = HAL_UART_BR_19200; uartConfig.flowControl = HAL_UART_FLOW_OFF; uartConfig.flowControlThreshold = 0; uartConfig.rx.maxBufSize = 128; uartConfig.tx.maxBufSize = 256; uartConfig.idleTimeout = 6; uartConfig.intEnable = TRUE; uartConfig.callBackFunc = (halUARTCBack_t)cSerialPacketParser; // start UART // Note: Assumes no issue opening UART port. (void)HalUARTOpen( HAL_UART_PORT_0, &uartConfig ); |
|
|
|
|
|
yangwenzhen 发表于 2019-9-29 22:26 试下把这条语句注释掉:HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT ); |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
387 浏览 2 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
580 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1034 浏览 1 评论
691 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
504 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
137浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
106浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
115浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
112浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
143浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 04:18 , Processed in 1.080747 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号