GPIO xy2-100

2018-11-07  本文已影响0人  问心_eb81

/***********************

GPIO模拟XY2—100驱动

2016-10-10

***********************/

/********************

协议原理

1.  SCLC10

2.DATA_XC11

3.DATA_YC12

4.  SYNCC13

********************/

#include"XY2-100.h"

//发送一个数据段的格式应该是:C2(第一位) C1C0(连续调用两次普通bit) D15~D00(连续调用两次普通byte) P(最后一位)

                                                           

void XY2_Init(void)

{

        RCC->APB2ENR |= RCC_XY2;//1 << 4; 时钟使能

        SCL_OUT();

        SYNC_OUT();

        DATA_Y_OUT();

        DATA_X_OUT();

        SYNC = 0;

        XY2_SCL = 0;  //同步和时钟拉低

       

}

void XY2_Send_Bit(bool x, bool y)

{

        DATA_X = x;

        DATA_Y = y; //数据位置数

        XY2_SCL = 1; //clock拉高

        delay_us(10); //延时

        XY2_SCL = 0;

}

void XY2_Send_First_Bit(void)

{

        DATA_X = 0;

        DATA_Y = 0; //数据位置0

        XY2_SCL = 1; //clock拉高

        SYNC = 1;//同步拉高

        delay_us(10); //延时

        XY2_SCL = 0;

}

void XY2_Send_Last_Bit(bool px, bool py)

{

        DATA_X = px;

        DATA_Y = py; //奇偶校验位

        XY2_SCL = 1; //clock拉高

        SYNC = 0;//同步拉低

        delay_us(10); //延时

        XY2_SCL = 0;

}

void XY2_Send_byte(u8 tx,u8 ty) //发送一个字符 char类型

{

        u8 t;

        DATA_X_OUT();

        DATA_Y_OUT();

        XY2_SCL = 0;

        for (t = 0; t < 8; t++) //将一个字符从高位到低位依次转化为脉冲

        {

                DATA_X = (tx&0x80) >> 7;

                DATA_Y = (ty&0x80) >> 7;

                tx <<= 1;

                ty <<= 1;

                delay_us(10);

                XY2_SCL = 1;

                delay_us(10);

                XY2_SCL = 0;

        }

}

上一篇下一篇

猜你喜欢

热点阅读