GPIO xy2-100
/***********************
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;
}
}