完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
常见的编码方式有以下几种,
1、NRZ(Not Return to Zero)不归零编码, 这是一种比较简单的编码方式,二进制数据“0”和“1”分别用高电平和低电平来表示,当1位数据传输完以后,信号电平 不返回零所以称为不归零编码。 2、BiPhase编码, 相比NRZ编码方式,这种编码稍微复杂了一点,他是这样规定,在每一位数据传输时,电平都会跳变(高电平变低电平,或者低电平变高电平), 同时当数据为“1”时(按照规定也可以是“0”),在数据位中间也会跳变。 3、曼彻斯特编码方式, 这种编码方式利用信号的边沿来表示二进制数据“0”和“1”,比如信号的上身沿表示“1”,下降沿表示“0”,而这种跳变一般发生在位帧的中间。 以上3中编码方式的波形如下图所示, 图1 常见编码方式波形图 假设信号的上升沿表示“0”, 下降沿表示“1”,同时假设数据的波特率为f, 那么一个位的时长为1/f,那么位帧的中间时长为1/2f,我们用T来表示这个半个位帧的时长。 有了以上的假设条件,那么曼彻斯特的编码流程如下, 1. 首先I/O口输出高电平。 2. 检查数据是否发送完成,如果是,跳到步骤7。 3. 检查下一个数据位的值。 4. 如果是“1”,调用发送1的函数ManchesterOne(T)。 5. 如果是"0",调用发送0的函数ManchesterZero(T)。 6. 返回到步骤2。 7. I/O输出为高电平并返回。 ManchesterOne(T)的执行过程 1. I/O 输出低电平。 2. 等待半位帧时间T。 3. I/O输出高电平。 4. 等待半位帧时间T。 5. 返回。 ManchesterZero(T)的执行过程 1. I/O 输出高电平。 2. 等待半位帧时间T。 3. I/O输出低电平。 4. 等待半位帧时间T。 5. 返回。 曼彻斯特解码 曼彻斯特解码过程要比编码复杂,一般的,解码过程有以下步骤: 1. 获取数据流的波特率(或者已知数据流的波特率)。 2. 同步数据流的时钟信号(实质是区分位帧边沿和半位帧边沿)。 3. 根据上面两步对数据流进行解码。 假设的条件和编码时一样,具体的实现步骤如下, 1. 将定时器的捕获中断设置为所有边沿(对于没有上升沿和下降沿同时捕获的MCU,需要在中断处理函数里改变捕获沿)。 2. 中断函数里处理捕获标志位和捕获值。 3. 开启定时器,捕获第一个边沿并丢弃。 4. 捕获下一个边沿,检查捕获值是否等于2T(T = 1/2f,其中f为数据流的波特率。 5. 重复步骤4,直到捕获值等于2T(此时就和数据流的时钟同步了)。 6. 读取当前I/O信号的电平值,并保存为当前位的值(0或者1)。 7. 捕获下一个边沿 a. 捕获值和T比较 b. 如果捕获值等于T i. 捕获下一个边沿同时确定该捕获值也等于T(如果不等说明编码错误) ii. 下一位的值和当前值相同 iii. 返回该值 c. 如果捕获值等于2T i. 下一位的值和当前值相反 ii. 返回该值 d. 否则返回错误 8. 保存下一位的值到缓存 9. 如果接收到的数据位达到要求,返回对数据做进一步处理 10. 否则更新当前值(设置为下一位的值),重复步骤7 下图展示的是这种解码方式的一个示意图, 图2 曼彻斯特解码示意图 总结 总的来说,编码和解码还是比较简单的,曼彻斯特的典型应用是在RFID领域里标签读取。另外,上面假设上升沿表示“1”,下降沿表示“0”,对于相反的情况(即上升 沿表示“0”,下降沿表示“1”),解码过程处理不同的地方在步骤6,假如同步到数据流的时钟,对于上升沿表示“1”,下降沿表示“0”的情况,当前位的值和读取到的I/O 的值相同;对于上升沿表示“0”,下降沿表示“1”的情况,当前位的值和读取到的I/O的值相反。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1760 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1058 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
724浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 16:31 , Processed in 0.683044 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号