标题: 通信疑问 通信时基于软件来协定传输模式的对吧?那么串行的话每次传输一帧数据 [打印本页]

作者: 正在学习51    时间: 2023-2-12 18:38
标题: 通信疑问 通信时基于软件来协定传输模式的对吧?那么串行的话每次传输一帧数据
过完年了我来重启学习哈哈哈问个问题。
通信时基于软件来协定传输模式的对吧?那么串行的话每次传输一帧数据,可是软件应该怎么写?我记得软件对输入的监视都是以字符为单位的。


可以一帧数据里包含了起始结束等数,其中就比如起始位只有1bit软件怎么监视它?

作者: yxtao    时间: 2023-2-13 08:58
很多的单片机都有自带的外设,这些底层的通讯协议外设自己就能解读,初始化的时候设置一下就行了,实在想知道怎么实现的话找个51的串口教程学习一下就行了
作者: ly1972001    时间: 2023-2-13 09:40
收到起始位就认为是报文头了。所以协议要严谨。
作者: xuyaqi    时间: 2023-2-13 10:24
通信双方要有协议,比如一帧几个字节,起始字节是什么,结束字节是什么,中间字节含义是什么,接收方用串口中断接收。
作者: 最后一个夏天1    时间: 2023-2-13 12:53
单片机底层串口协议保证一个字节接收无误以bit为单位,你自己定义的通信协议在底层串口协议基础上以字节为单位,这样你就可以自己定义接收符,结束符和数据了。
作者: 人中狼    时间: 2023-2-13 14:50
协议是包含软件和硬件的,并不是单一的
作者: jizhongbiao    时间: 2023-2-13 17:48
构造一个通信帧就可以了有头有尾有校验
作者: 正在学习51    时间: 2023-2-14 03:50
xuyaqi 发表于 2023-2-13 10:24
通信双方要有协议,比如一帧几个字节,起始字节是什么,结束字节是什么,中间字节含义是什么,接收方用串口 ...

起始字节吗?我看书上说的他给个图就是下沿起始,所以这个下沿不是1bit吗,并不是一个字节8nit啊。
而我学过的编程命令里只有一个监视键盘的指令,这个指令监视的是一个键盘至少1字节的信号。

而书上画的是下沿不就等于1bit吗所以我就不明白了,1bit不能代表任何字该怎么编程?

比如说I/O口P11<1则进行某些指令,这个1不是8位的字节吗?下沿只有1bit不能分辨啊。还是1就是1bit的1?

看来我是没清楚I/O口的设计吧,我找找资料看看。

作者: ankangyu    时间: 2023-2-17 13:56
重点是检测总线一帧数据的时间间隔,从而记录数据起始位和结束位。
作者: xuyaqi    时间: 2023-2-18 20:00
正在学习51 发表于 2023-2-14 03:50
起始字节吗?我看书上说的他给个图就是下沿起始,所以这个下沿不是1bit吗,并不是一个字节8nit啊。
而我 ...

书上说的下沿起始,这是单片机硬件要解决的问题,你只需要把单片机收到的一个字节(8位)能处理就行,硬件的事不用你管。
作者: qsssuv    时间: 2023-2-18 20:52
1、串口和字节。串口自身规定了波特率F,在收到1个下降沿,串口硬件会不断在1/F的时间内采样,若被理解成0,则认为是起始信号,然后以这样的规律不断采集中断传输的数据。并去掉起始信号和结束信号,将中间的数据以字节呈现在数据寄存器中。大概了解一下就行了。
2、若要监控一帧。可以在每次接收一个字节之后(请把它们存在数组中,并标记接收数量)都启动定时器T,T的内容是5ms后将帧接收完成标志位置1。这样每接收1个字节就刷新这个定时器,直到总线空闲了,你将会得到一帧内容。
作者: Y_G_G    时间: 2023-2-18 21:03
现在看来
我几个月前的回答,还是对
搞了那么久,连位和下降沿都没分清
作者: wulin    时间: 2023-2-19 10:31
正在学习51 发表于 2023-2-14 03:50
起始字节吗?我看书上说的他给个图就是下沿起始,所以这个下沿不是1bit吗,并不是一个字节8nit啊。
而我 ...

MCU通讯是基于两个基本的物理量——电平与时间。电平的高低随时间变化就是脉冲,对脉冲的高低及脉宽识别就能实现最基本的通讯需求。在此基础上发展出复杂的通讯技术,在特定时间的电平状态为1bit,8 bit 为一个字节,若干字节组成一帧数据。为了保证正确通讯,发送端与接收端必须对通讯信号含义做统一规定,这个规定就是通讯协议。通讯双方呼叫起始可以是一个高电平或低电平,也可以是一个上升沿或下降沿,也可以是特定宽度的脉冲,也可以是特定的脉冲串。书上画的上升沿或下沿不等于1bit,只是一个电平变化状态。只有对上升沿或下沿赋予1bit数据含义才能说等于1bit。说的有点啰嗦,也不一定准确,姑妄听之。
作者: watsonbu    时间: 2023-2-21 09:44
上位机要接收完整的以字节 BYTE 为单位数据,然后再去取某一位 bit 的值进行判断。麻烦的是电脑一般32位,甚至64位了,要考虑单片机是多少位机,比如:8位的单片机,就要用联合体或者结构体把 4 byte 的数据弄成32位的双字 doubleword 给电脑,收到以后,再取含有起始位的字节里找到并判断,比如:0xffff,肯定起始位就是1,0x0000,起始位就是0,当然,其它比如:0xff8f  这种类型的话,这里面还有大端小端数据的分别,否则就容易取错了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1