如果用一单片机为主控,来接收其他仪器发送的串口数据,并存储及LCD显示,请问重点是在哪一块设计?
原本有一仪器不断获取数据并通过上位机显示,还可以通过上位机发送命令进行控制,我想用单片机做一套系统完全取代上位机,请问是否可行,欢迎嵌入式高手来讨论下。...
原本有一仪器不断获取数据并通过上位机显示,还可以通过上位机发送命令进行控制,我想用单片机做一套系统完全取代上位机,请问是否可行,欢迎嵌入式高手来讨论下。
展开
3个回答
展开全部
先不说重点 先说难点(追问不能及时回答)
仪器与电脑用串口通信 看9600的波特率来说,数据量不是很大,就暂且认为数据量不是很大。
没有猜错的话,仪器与电脑的通信是采用数据包的形式通信的,最简单的数据包会有包头,包尾,形式,数据,校验等部分组成,难点在于包格式分析,如果厂家给了你包格式,那就很简单了。
如果没有厂家资料,这就有可能算是侵权了,自己注意。首先,判断仪器内处理器的水平,如果是个简单电源,最多是个8位处理器,如果是个示波器,那怎么也得是32位处理器。如果这个数据没必要加密,那就最好了,如果加密了您就找别人去吧,我办不了。8位的处理器,包格式应该会很简单,收集一些数据后,简单分析一下就行。如果是32位的,可能会比较复杂,分析后自行斟酌要不要继续弄。
下面是编程的:
猜测你是新手(猜错了别拍我哈)。
单的是在单片机中开辟一个足够长的缓冲来接数据,收到包头开始储存数据 收到包尾结束储存。
一般包头后面几个字节内会有标识数据长度的一个或几个字节,分析一下他是怎么计算的长度,接收到足够长的数据后再允许接受包尾。
用定时器建立超时,接收到包的过程中如果有超过**ms内没有接收到数据,就说明超时,这样就算作退出,进入最初的模式(这是传输过程中突然掉线的情况)
一般都会有校验,但是建议不处理校验,一般都会是至少crc8 如果是32位可能是crc32,新手不建议研究crc ,但当数据量比较大的情况下,应该会是字节相加(只取一个字节的数据)然后取反再稍微处理一下(还是挺麻烦的,尤其是你自己分析起来挺麻烦)。
还有,不知道你所谓的存储是怎么存储,如果只用个eeprom存储几个字节还算简单,要想存储到u盘或者内存卡的文件中,那就很难了,但网上会有一些实例供你用,如果你没打算这么做,就别这么做,因为你的单片机资源会在这一个地方消耗很多
触摸屏的话...你要使用的彩色液晶做显示器,资源消耗也是可观的。
小结:最后还是归结到选型上来了,如果单片机主频高,液晶有带字库或者有字库的硬件,rom在几十k估计就足够用的,ram也得有好几k就差不多了(我给你留有足够的余量的)
说的没有条理,随便看看吧
仪器与电脑用串口通信 看9600的波特率来说,数据量不是很大,就暂且认为数据量不是很大。
没有猜错的话,仪器与电脑的通信是采用数据包的形式通信的,最简单的数据包会有包头,包尾,形式,数据,校验等部分组成,难点在于包格式分析,如果厂家给了你包格式,那就很简单了。
如果没有厂家资料,这就有可能算是侵权了,自己注意。首先,判断仪器内处理器的水平,如果是个简单电源,最多是个8位处理器,如果是个示波器,那怎么也得是32位处理器。如果这个数据没必要加密,那就最好了,如果加密了您就找别人去吧,我办不了。8位的处理器,包格式应该会很简单,收集一些数据后,简单分析一下就行。如果是32位的,可能会比较复杂,分析后自行斟酌要不要继续弄。
下面是编程的:
猜测你是新手(猜错了别拍我哈)。
单的是在单片机中开辟一个足够长的缓冲来接数据,收到包头开始储存数据 收到包尾结束储存。
一般包头后面几个字节内会有标识数据长度的一个或几个字节,分析一下他是怎么计算的长度,接收到足够长的数据后再允许接受包尾。
用定时器建立超时,接收到包的过程中如果有超过**ms内没有接收到数据,就说明超时,这样就算作退出,进入最初的模式(这是传输过程中突然掉线的情况)
一般都会有校验,但是建议不处理校验,一般都会是至少crc8 如果是32位可能是crc32,新手不建议研究crc ,但当数据量比较大的情况下,应该会是字节相加(只取一个字节的数据)然后取反再稍微处理一下(还是挺麻烦的,尤其是你自己分析起来挺麻烦)。
还有,不知道你所谓的存储是怎么存储,如果只用个eeprom存储几个字节还算简单,要想存储到u盘或者内存卡的文件中,那就很难了,但网上会有一些实例供你用,如果你没打算这么做,就别这么做,因为你的单片机资源会在这一个地方消耗很多
触摸屏的话...你要使用的彩色液晶做显示器,资源消耗也是可观的。
小结:最后还是归结到选型上来了,如果单片机主频高,液晶有带字库或者有字库的硬件,rom在几十k估计就足够用的,ram也得有好几k就差不多了(我给你留有足够的余量的)
说的没有条理,随便看看吧
追问
我确实是个新手,目测这位老大是个有经验的老手了。很高兴看到你的回答。有些问题可能不太清楚我具体情况,所以我说一下,看看还有没有需要指点指正的。
难点
数据量不大,通信我猜没有包格式,就是简单的串口按位发送接收吧。仪器本事8位处理器,所以应该没有问题了。
编程
缓冲区打算外接fifo。检验的话不太懂为什么不需校验呢?
触摸屏选择黑白带字库的。
mcu选择pic32系列的。
追答
有包的可能性很大,即使只是简单的数据传输,因为厂家会为后续开发留空间的,你最好接到电脑的串口调试助手上看看数据形式
数据量不大,就不需要fifo了,直接在内存中开辟个缓冲区就行,在有包的形式下才会有校验,校验是防止数据传输过程中干扰导致的错误,如果你的系统对错误不是很敏感的话(比如不停的刷新显示)就不用交验了,可以减小编程难度
显示+触摸如果有 测试程序,修改一下就可以了,没有的话就比较难了(如果是模块的形式,那就没有难度了)
pic32没接触过,估计32位的处理器怎么也不会很差,应该能完成你的目标
我想起来的全说了,鄙人菜鸟
展开全部
理论上绝对可行的。只是要看他每个包发送的频率是多少,自己的MCU的频率是不是来得及将数据存在存储芯片里面,而且存储芯片数据怎么取出来,显示等等。就是说会不会数据还没有存好就有新的数据发来冲掉旧的数据
追问
仪器串口发送的速率是9600是不是每个包发送的频率,假设不存在上面个说的单片机速度问题。我想知道之前上位机对仪器显示 及操作(发送控制命令)都是在界面上的,单片机的话可以先取出数据然后接LCD显示,发送命令怎么办,应该用个触摸屏就可以了吧? 还有单片机接收的数据时先显示好呢,还是先存储了在取出显示(怀疑不能实时显示)。
追答
“之前上位机对仪器显示 及操作(发送控制命令)都是在界面上的”你的意思是在PC机上操作是吧?控制命令你需要有通信规约,就是原来PC机和仪器之间的通讯规约,这个需要找到仪器生产厂家,我也忘记了,你还需要看看仪器和PC之间是什么样一种通讯方式,就是说你必须要和仪器生产商联系下的。先存数据好还是先显示好,我觉得无所谓,存储和显示一般就是几个纳秒或者毫秒的时间,可以同时进行的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机主要是速度能不能达到控制要求,先分析这个。
追问
谢谢,单片机速度方面更应该没有问题。我打算用pic32系列的,工作频率最高有80Mhz。
追答
那完全没问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询