打印

TI BLE CC2540 UART的DMA接收缓冲

[复制链接]
4941|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好

最近在做cc2540的BLE串口透传,CC2540的串口用的是DMA方式接收串口数据,现在发现DMA接收缓冲最大只有128个字节,而我的应用是每次串口数据可能会大于128字节,最大可能有200字节的数据接收(给CC2540串口发送数据端不可控,等于是对方的包只能是来什么收什么,不能把大包拆成小包来处理!),通过修改DMA的接收buffer一直报错,报错信息见附件,按照报错信息手动修改了Xdata地址空间,也在XCL配置文件里面修改了XDATA的地址定义,但是还是报错,所以上论坛来请有过经验的朋友指点一下!万分感激!!!

错误提示.jpg (121.49 KB )

错误提示.jpg

相关帖子

沙发
xuesong12345678| | 2015-4-17 07:17 | 只看该作者
修改_hal_uart_dma.c中的两个宏,将HAL_UART_DMA_IDLE后面的0改为1,将HAL_UART_DMA_RX_MAX修改为256。家里网络有问题,手机回复,不能贴代码,见谅哈

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
dirtwillfly + 6 很给力!
板凳
xuesong12345678| | 2015-4-17 10:46 | 只看该作者
另,提示xdata错误是ram.不够了,你适当优化下

使用特权

评论回复
地板
seanwaye|  楼主 | 2015-4-17 16:54 | 只看该作者
本帖最后由 seanwaye 于 2015-4-17 16:56 编辑
xuesong12345678 发表于 2015-4-17 07:17
修改_hal_uart_dma.c中的两个宏,将HAL_UART_DMA_IDLE后面的0改为1,将HAL_UART_DMA_RX_MAX修改为256。家里 ...

谢谢,就是你说的这个方法,不过我发现TI给的Xdata空间太小了,加上32位的CRC校验后,就报错,错误提示XDATA空间太小,但是我实际只是定义了一个170字节的数组而已,UART的DMA接收buffer用的是TI系统默认的128字节!

现在只好不用CRC32校验了,把UART的DMA接收buffer增加到250个字节,自己再定义一个170字节长度的数组!现在一切正常了!还是想知道该如何修改这个XDATA空间大小,自己尝试修改了几次后都是报错(主要是在TI提供的XCL文件里面修改的)!不清楚TI的这个XDATA空间用户该如何增加使用空间?

使用特权

评论回复
5
comeon201208| | 2015-4-19 23:18 | 只看该作者
关于DMA的用法,用好了,能减少很多的负担。

使用特权

评论回复
6
firstblood| | 2015-4-20 21:20 | 只看该作者
现在只好不用CRC32校验了,把UART的DMA接收buffer增加到250个字节,自己再定义一个170字节长度的数组!现在一切正常了!
??

使用特权

评论回复
7
firstblood| | 2015-4-20 21:21 | 只看该作者
这个在做程序设计的时候注意DMA的存储空间的设置的。

使用特权

评论回复
8
seanwaye|  楼主 | 2015-4-27 12:08 | 只看该作者
firstblood 发表于 2015-4-20 21:21
这个在做程序设计的时候注意DMA的存储空间的设置的。

我感觉是32CRC校验占用ram空间太大 ,导致益处造成的报错,所以把这个校验去除应该能正常工作,主要根源是RAM空间太小造成的。应该无解吧?

使用特权

评论回复
9
quray1985| | 2015-4-30 08:52 | 只看该作者
先优化一下代码试试

使用特权

评论回复
10
luofeng2g| | 2015-4-30 09:11 | 只看该作者
什么控制芯片,多大的RAM?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

135

帖子

1

粉丝