常见的编码方式有以下几种,
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的函数Mancheste