完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
本帖最后由 一只耳朵怪 于 2018-6-8 09:59 编辑
通过串口中断的方式, MAP_UARtintRegister(UARTA1_BASE, UARTIntHandler); 只能接收到16个字节, 也看到cc3200 串口 FIFO只有16个字节。 请教大家,怎么接收串口数据? 程序上怎么设置。 |
|
相关推荐
9个回答
|
|
|
关于CC3200的UART的FIFO的大小最大为 16 x 8bit,注意UART的FIFO的level最少可以设置为1/8,也就是最少串口收到2个字节就会触发UART硬件中断,转入进行串口中断处理程序。当然也可以关闭UART的FIFO,参考程序如下:
void Uart1InterruptInit(void) [ unsigned long ulStatus; UARTFlowControlSet(UARTA1_BASE, UART_FLOWCONTROL_NONE); // UARTFIFOLevelSet(UARTA1_BASE,UART_FIFO_TX1_8,UART_FIFO_RX1_8); //FIFO 最小为1/8*16Byte 即串口接收2Bytes产生中断 // MAP_UARTTxIntModeSet(UARTA0_BASE, UART_RXINT_MODE_EOT); MAP_IntPriorityGroupingSet(1); MAP_IntPrioritySet(INT_UARTA1, HIGH_PRIORITY); ulStatus = MAP_UARTIntStatus(UARTA1_BASE, false); MAP_UARTIntClear(UARTA1_BASE, ulStatus); UARTIntRegister(UARTA1_BASE, UART1BaseIntHandler); MAP_UARTIntEnable(UARTA1_BASE, UART_INT_RX); UARTIntClear(UARTA1_BASE, UART_INT_RT); UARTIntClear(UARTA1_BASE, UART_INT_TX); // g_ulUart1APriority = MAP_IntPriorityGet(INT_UARTA1); // MAP_IntPrioritySet(INT_UARTA1, (unsigned char)g_ulUart1APriority); //-----------------------------------串口单字节接收数据-超时检测打开-------------------------------------- UARTIntEnable(UARTA1_BASE, UART_INT_RT); //使能超时中断检测 //-------------------------------------------------------------------------------------------------------- UARTIntDisable(UARTA1_BASE, UART_INT_TX); //关闭Transmit Interrupt MAP_UARTFIFODisable(UARTA1_BASE); //关闭串口FIFO MAP_UARTEnable(UARTA1_BASE); ] |
|
|
|
|
asa1253 发表于 2018-6-7 02:07 谢谢你的回复, 我试了, 还是不行。 有时可以接收到16个字节, 有时就接收不到。 程序上有些改动。 这是我的中断处理函数。 请教一下, 问题出在哪里了? 程序上是DMA TX void UARTIntHandler() [ char cCharacter; unsigned long status = UARTIntStatus(UARTA1_BASE, true); if (status & UART_INT_RX) [ UARTIntClear(UARTA1_BASE, UART_INT_RX); while (UARTCharsAvail(UARTA1_BASE)) [ cCharacter = UARTCharGet(UARTA1_BASE); Report("=%d ", cCharacter); ]//while ] if (status & UART_INT_RT) [ UARTIntClear(UARTA1_BASE, UART_INT_RT); while (UARTCharsAvail(UARTA1_BASE)) [ cCharacter = UARTCharGet(UARTA1_BASE); Report("==%d ", cCharacter); ] ] if(status & UART_INT_DMATX) [ MAP_UARTDMADisable(/*UARTA0_BASE*/ UARTA1_BASE,UART_DMA_TX); UARTIntClear(UARTA1_BASE, UART_INT_DMATX); ] ] |
|
|
|
|
kuangbendetuzi 发表于 2018-6-7 02:25 程序上要怎样,才可以正确接收串口数据? 现在 每次只能接收16个字节。 实际每次发送时200个字节 |
|
|
|
|
|
用cc3200 板子做产品, 使用串口通信。 这个问题应该都会遇到吧? 没有人解决这个问题吗? |
|
|
|
|
|
触发中断后要及时把数据存到其他地方,不然会被覆盖 昵称:灰小子 qq:1358611172 |
|
|
|
|
|
用了一个全局的数组存储, 但每次只能收到16个字节。 请教一下 该怎么做? |
|
|
|
|
|
问题解决了, 在UART中断中,不要使用 report()等比较耗时的函数。 |
|
|
|
|
|
问题解决了, 在UART中断中,不要使用 report()等比较耗时的函数。 |
|
|
|
|
|
问题解决了, 在UART中断中,不要使用 report()等比较耗时的函数。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:35 , Processed in 1.270387 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3317