51单片机HXD019驱动
发布时间:2017-02-18 浏览次数:5744次

 

                                           51单片机和hxd019通讯说明 

0,设置三个GPIO和初始化 hyxx.c文件:

     MCU与遥控IC_HXD019相连的所有IO内部下拉需要关闭,Set_SDA_IO()到 GetBUSYStatus()的所有主控芯片和hxd019连接的pin脚设置函数设置好,分别是硬件上的SDASCLBUSy上电或待机时均为高电平,然后 加入编译;

1,发学习数据或码库数据:

1.1.码库得到的数据(Size不定长,最多120个字节,学习数据是232个字节)范例:

unsigned char  data[]={0x30,0x00,0x01,0x1c,0xE3,0x00,0xFF,0x20,0x88,0xD7}

1.2.然后调写函数: writeI2C(data, 10): 

2,学习和发学习数据,hyxx.c文件

2.1  进入学习:主控如果从上层得到的数据:头两个字节为0x30,0x20调一次所给函数  Learn_start2();

(此时外部操作:用被学的遥控器对着红外二极管发码,超过20秒左右不学习,HXD019超时);

2.2   等学习完成: 当IO口:busy口由低变高,立即调用函数 调用函数readI2C2(),主控自己写,范例:

                   LLearn_start2();

Delay10ms(10);

while(BUSY==0)

Delay10ms(1);

if(BUSY==1)

{

readI2C2(ReceiveBuf1);  //进入学习后,busy由低变高,读数据

Delay10ms(10 );

                        ......

得到的数据readtempbuf[]={},230个字节;回传给上层或本主控处理(本案例是后者):将读到的第一个字节00去掉,前面加30 03 加校验,30开始所有数据和的低8位放第232字节,30 03 +(00  229个字节)+校验(前面所有数据和的低8位),要用时发回019芯片,函数名writeI2C(),本例是学习数据,为232个字节,如果码库数据Size可能有变,根据实际码值填写;

3,硬件相关:

  将硬件连接好,在调试期间,建议三个通讯IO口,各串一个100R左右的电阻(量产不需要),防止异常IO冲突.

4,时序调整,在hyxx.c文件,

 

参考<时序参考图.JPG>文档:根据MCU不同时钟调整,测通讯时钟SCL线调以下参数:

 

       #define  DELAY_TIME  15// 使SCL时钟周期在调用writeI2C()时:H=30uS,

       #define  DELAY_ST  20//hxd;SCL第一个下降沿到第二个下降沿的时间:20mS,

 

 注:调程序时如果连续调用writeI2C()和Learn_start2()时中间要间隔800mS, Learn_start2()后到查busy是否变高:要间隔50mS以上。

 

专业遥控芯片:手机万能遥控器,红外遥控IC,HXD019,红外码库,红外遥控数据,万能码库,云端码库,wifi转红外,红外万能码库,在线库,离线库,红外码库大全,红外万能码库大全
您是第3399位访客   粤ICP备13027018号 深圳市市场监督管理局企业主体身份公示