1、IIC的特殊功能
1.1、IIC的10bit设备地址
10bit地址格式与7bit地址不同,分发送方向和接收方向。
1.1.1、发送方向
第一个字节的前7位是1111 0XX:XX是10bit地址的最高有效位的前两位
第一个字节的第8bit是读写位:决定传输方向
第二个字节为10bit地址的有效低8位
(1)注意:尽管1111 XXX有8种可能的组合,然后只有1111 0XX这四种可以用于10bit寻址,剩下的1111 1XX这四种是为将来I2C扩展用的
(2)例如:配置的slave地址为0x110,拆成10bit二进制值为 01 0001 0000
按照协议规则,前2位放在XX,即第1个字节的前7位为 1111 001
第1个字节第8bit是加上写位,即 1111 0010
第2个字节为 0001 0000
1.1.2、接收方向
接收方向时,会反向,所以地址由3个字节组成
(1)、例如:配置的slave地址为0x110,拆成10bit二进制值为 01 0001 0000
按照协议规则,前2位放在XX,第1个字节的前7位为 1111 001
第1个字节第8bit加上写位为 1111 0010
第2个字节为 0001 0000
第3个字节第8bit是加上读位 1111 0011
1.2、IIC的PEC校验功能
通常IIC协议传输,只发送或接收指定长度的数据,没有多余的数据字节,PEC是在协议末尾多发或多收一个字节,用于校验数据正确性。
控制器会根据之前发送完的所有字节,计算得到CRC8校验码(不同控制器使用的规则可能不同),只需要发起PEC命令,就能自动把CRC8校验码发出去。
接收带PEC功能的数据时,接收完有效数据后,再多收一个字节即可。
(1)、例如:slave地址为0x10,发送2个有效数据(0x6、0x7)
发送时协议数据为 :0x20(slave地址+写位0)、0x6、0x7、0x28(PEC校验码)
接收时协议数据为 :0x21(slave地址+读位1)、0x6、0x7、0x43(PEC校验码)
这里计算的CRC8采用以下规则:CRC在线计算
1.3、IIC的SMBUS ARP功能
SMBUS是包含在IIC协议里的,有主机和设备的概念,但和master、slave概念又有所不同。
配置了SMBUS使能后,该设备可以选择作为主机(有固定的主机地址),还是设备(有固定的设备地址)。
总线上,只能允许一个主机存在,可以有多个设备。
假如IIC配置成SLAVE模式,可以配置任意的SLAVE地址;再配置SMBUS使能,选择作为主机,还是作为设备。其他master可以寻址该IIC的SLAVE地址、或固定的主机地址、或固定的设备地址。
1.4、IIC的广播功能
仅SLAVE模式可以开启广播响应功能,且SLAVE地址为0x00,master向slave发送数据时,slave可以查询到广播响应状态。
2、UART的特殊功能
2.1、奇校验
数据1个数为奇时,校验为0,反之为1
例如0x00数据1的个数为0,校验位为1
例如0x01数据1的个数为1,校验位为0
2.2、偶校验
数据0个数为偶时,校验为0,反之为1
例如0x00数据1的个数为0,校验位为0
例如0x01数据1的个数为1,校验位为1
2.3、按WORD发送
配置数据宽度为8bit,按word模式发送时,数据都是按32位发送的,不足32位时,高位补0。
例如数据依次为0x5A,0x5A5A,0x5A5A5A,0x5A5A5A5A,发出的数据如下:
3、TIMER的捕获功能
使用timer的周期,配置引脚,采集外部输入信号,得到外部输入信号的脉冲宽度值。
有上升沿采样、下降沿采样、电平采样3种方式
例如timer的频率是1K,工作时钟是10M
周期值 = 时钟 / 频率 = 10M / 1000 = 10000
即一个高电平和一个低电平组成的周期值是 10000,高电平和低电平周期值分别是5000
波形周期 = 1 / 频率 = 0.001秒
3.1、上升沿采样
由上述描述得知,两个上升沿之间的周期值为10000
软件配置上升沿采样,捕获产生中断的阈值需要小于等于10000,中断产生后,可得到当前捕获的实际周期值是多少,再根据公式反推得到输入波形的频率。
3.1、下降沿采样
由上述描述得知,两个下降沿之间的周期值为10000
同上升沿采样,可以得到输入波形的频率
3.2、电平采样
由上述描述得知,单个电平(高电平或低电平)周期值为5000
软件配置上升沿采样,捕获产生中断的阈值需要小于等于5000,中断产生后,可得到当前捕获的实际周期值是多少,再根据公式反推得到输入波形的频率。
还能得到当前捕获的是高电平还是低电平。
例如下列测试结果:edge 0 表示电平采样,edge 1 表示上升沿采样,edge 2 表示上升沿采样