红外遥控模组NEC协议 38kHZ载波
自家的

外采遥控器的

大致写法:
MCU: STM32f103
单片机GPIO引脚控制红外灯珠, 然后定时器1不停的反转最终达到 近似38khz 占空比30的一个PWM波
红外接受器,当接受到38khz波时输出低电平,没有接受 到输出高电平,最终监听现象如上图
主程序通过控制定时器1来实现 来实现各种NEC协议等各种操作
然后去测试空调发现控制不了,最终检查协议格式是对的 就是精度问题如上图,外采可以很准确的输出一个560us的一个低电平与高电平,而我不行也做不到,

做不到的测试推出来的原因:
首先修改延时是可以改变 红外接受高低电平的宽度的,但是不是线性的,而是阶梯状的,
举个例子SysTick_Delay_Us(560); 与SysTick_Delay_Us(565), 红外接受输出的宽度都是 572.625us; 而当写570的时候,红外输出时598.925us,是成阶梯状的,不是线性的;
我猜测是一个完整的38khz一个周期是26us,所以我延时的时间是38khz的周期的整数;例如我输出一个38khz 红外接受低电平26.3us,两个38khz周期就是72.6us;所以我延时是没用的 只能延周期时间的倍数 560us/(一个38kHZ周期的时间),不能线性的延时;不明白外采是怎么做到560us正正好好的
我感觉我制作遥控器的方向错了;指导一下:除了买万能遥控芯片;我是知道有万能遥控芯片的;但是时间来不及只能硬件先这样了; 我不能外采是怎么做到的
示意图
