[求助]modbus用什么方式来读一连串外部flash的数据

2019-12-31 19:13发布

stm32 移植freemodbus成功了,是参照着坛子里的移植方法,在从机执行动作的这一块,是通过查询某个数组里值来判断动作了

比如说,输入寄存器吧,usRegInputBuf[0],这个里面如果是1 就让灯点亮,如果是0 灯就灭,通过轮询的方式来检查usRegInputBuf里面的值,
上位机只管读和写,modbus协议在单片机里面就自己传上去了,在数据传输上基本都是自动的。而我也只好通过查询输入寄存器里面值的变化来做处理
有没有更好的处理方式?

还有一个比较头疼的问题,就是外部flash里的数据,我能自己读写,在modbus里面我怎么才能然主机可以知道我flash里的值,难道说我把值放到自己定义的寄存器数组里面吗,让主机自己去读就是了?
外部flash比stm32内部还大,而且是存一些历史数据,基本会存满,自己去读flash,然后把值放进数组里面,感觉这样很被动。
有没有更好的处理方式?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
adongliu
1楼-- · 2019-12-31 20:30
 精彩回答 2  元偷偷看……
ywlzh
2楼-- · 2019-12-31 20:54
adongliu 发表于 2017-2-27 12:47
读取和写寄存器函数定向到外部flash读写函数,做过使用modbus下载字库,就是速度太慢了。 ...

我这个不需要让主机写flash,它只管读就是了,怎么定向的?
mcu_lover
3楼-- · 2020-01-01 02:50
判定主机要读的地址,然后根据此地址取对应位置FLASH数据,放到数组里面就可以了。
lingdianhao
4楼-- · 2020-01-01 07:24
Modbus有地址啊,主机发不同的地址,你读外部flash的数据,再返回数据就可以了,如果地址不够用,再用翻页的方式!
redroof
5楼-- · 2020-01-01 09:37
lingdianhao 发表于 2017-2-27 22:13
Modbus有地址啊,主机发不同的地址,你读外部flash的数据,再返回数据就可以了,如果地址不够用,再用翻页 ...

地址只有2个64K*16位,可读写字和只读字。
只能自己做翻页处理了,一次只映射一部分。
redroof
6楼-- · 2020-01-01 12:40
 精彩回答 2  元偷偷看……

一周热门 更多>