类似于这种单线通讯协议,大家有什么好的读取实现方法,实时性相对高一点的
可以用很多方式来实现呀:
1.外部中断:通过上下边沿触发和定时器相配合。
2.定时器捕获功能:定时器捕获上下边沿并计数,通过计数来判断01.
3.定时中断判断:定一个10us的定时器,中断时判断IO口状态,用一个移位寄存器判断0、1数据。
非阻塞模式:
1、外部中断
2、定时器捕获
阻塞模式:
while等待,io翻转读取。
识别前导码,然后开始读数据
实时性高的话,推荐楼主使用定时器加DMA方式。每5us触发一次DMA,从IO口读取数据到内存。
通讯结束之后去内存里计算每个位的值,比如读到00001111111.......算作bit 1;读到111111......0000算作bit 0。
这种方式读取波形准确,不会受其他程序影响;而且不占用CPU,其他程序可以获得足够的运行时间。