OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6267|回复: 9

20K以上字节量同时接收与存储可行性疑问

[复制链接]

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-11-10 10:28:17 | 显示全部楼层 |阅读模式
5金钱
stm32通过串口负责接收大于20K字节量,波特率2400,中间不间断并在接收过程中将数据进行24c512存储,由于数据传输间隙小于存储需要时间,原本计划使用两个数组,每个数组128字节,第一个接收完成后第二个接收,第一个用于存储,以此循环,但是实验时发现无论发送多少数据,每次只能写入存储芯片256字节,应该接收到的也只有256字节,对此情况请大侠指导这种做法是否有可行性?是程序原因导致接收没处理好还是这种接收处理过程确实不能解决问题?

中断处理代码:
[mw_shl_code=c,true]if(i_num2%256<128) table[i_num2%128] = USART2->DR; else table_1[i_num2%128] = USART2->DR; if(i_num2 % 256 == 128) { write_flag = 1; } if(i_num2 % 256 == 0 && i_num2 != 0) { write_flag = 2; } i_num2++;[/mw_shl_code]
主函数中存储代码:
[mw_shl_code=c,true] if(write_flag == 1) { Write_Lenbyte(page_addr,&table[0],128); page_512++; write_flag = 0; } if(write_flag == 2) { Write_Lenbyte(page_addr,&table_1[0],128); page_512++; write_flag = 0; }[/mw_shl_code]



如果确实不能解决,打算使用DMA接收,然后进行存储,这种方式是否能够满足需求?

最佳答案

查看完整内容[请看2#楼]

回复【4楼】STM32VBT6: --------------------------------- 试了一下,延时3ms单个字节存储确实能够存进去,但还是我发送512字节,只是接收到256字节数据(通过液晶屏显示i_num2获得),挺纳闷的,定义的i_num2为unsigned int型,接收函数为:                         rec = USART2- ...
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-11-10 10:28:18 | 显示全部楼层
回复【4楼】STM32VBT6:
---------------------------------
试了一下,延时3ms单个字节存储确实能够存进去,但还是我发送512字节,只是接收到256字节数据(通过液晶屏显示i_num2获得),挺纳闷的,定义的i_num2为unsigned int型,接收函数为:
                        rec = USART2->DR;
Write_byte(i_num2,rec);
i_num2++;
应该是程序哪里的原因,如果这个解决了,那单个字节写和页写应该都可以,毕竟他们的延时都一样,只是不知道这样的延时长期使用稳定性如何?
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-11-10 11:37:21 | 显示全部楼层
发送端和接收端如果没有协议的话真不好弄。可以用原子的那个串口软件协议。
目前在玩STM32,BBB,RPi
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-11-10 12:05:26 | 显示全部楼层
回复【2楼】w0rmis20:
---------------------------------
现在主要问题在于接收的时候还要有存储,字节间时间约4.5ms,而存储需要10ms,所以需要进行交替存储,发送和接受上没有什么问题,本来认为能够接收大量数据,结果只能接收所定义数组长度数据,不知道是不是因为程序有地方不完善所致。
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-11-10 12:35:31 | 显示全部楼层
其实存储在EEPROM的时间一字节不需要10ms的,原子板子上的EEPROM我测试了下,只需要1.6ms,所以你延时个2~3ms是能够完成一个字节的存储的。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-11-10 14:43:13 | 显示全部楼层
回复【2楼】w0rmis20:
---------------------------------
回复【4楼】STM32VBT6:
---------------------------------
谢谢指导
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-11-10 14:58:41 | 显示全部楼层
连续传输不利于纠错和重发,建议楼主考虑加协议、拆分传输。
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-11-10 15:04:38 | 显示全部楼层
回复【7楼】styleno1:
---------------------------------
谢谢,问题在于我只是负责接收数据,连续发送方是我们公司工程师已经完成了的工作,由于传输速率选在2400,主观忽略传输错误的存在
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-11-10 19:08:40 | 显示全部楼层
你可以采用循环缓冲的方法来处理,在SRAM里开辟一个1024B的全局缓冲区,标记缓冲区头为START,缓冲区尾为END,创建两个全局指针变量,一个标记为TAIL,一个标记为HEAD,均指向START,串口中断负责往HEAD里丢一个B的数据,然后HEAD往前移动,HEAD到了END就重新定位到START,自己的任务里面负责对TAIL的数据进行存储操作,同样存储一个B就往前移动,TAIL到了END也重新定位到START,这样一旦有了新数据进来了HEAD总是在TAIL前面,所以自己的任务就可以死守TAIL就可以了,数据传输完毕后TAIL=HEAD的  这个方法我用在了串口接收GPRS的数据上面,GPRS传回来的数据受GPRS网速影响,用原子的串口协议接收对传输耗时不定的大量数据我没搞定,但这个方法很管用,我最多完整的接收过250K多的数据,且串口的速率是115200,而且是一边接收,在自己的任务里一边解析,在你的应用中对于字节间耗时4.5ms 完全没有问题
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2014-11-11 13:31:48 | 显示全部楼层
回复【9楼】kassandra:
---------------------------------
非常感谢,虽然原来的问题在于无线模块的收发不能超过256字节限制所致,但你的处理方法确实将数据结构的知识灵活使用,给我很大启发,厉害!!!
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 06:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表