hardware-notes 原文存档
关于ps2驱动时序图的理解
关于接线,
1-DATA(DI):信号流向从手柄到主机。此信号是一个8 bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高 到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。)
2-CMD(DO):信号流向从主机到手柄。此信号和DATA相对,同样是一个8 bit的串行数据,同步传送于时钟下降沿。
程序:
我们可以使用SPI,也可以自己写驱动,软件模拟波形。
`void PS2_Cmd(u8 CMD) { volatile u16 ref=0x01; Data[1] = 0; for(ref=0x01;ref<0x0100;ref<<=1) { if(ref&CMD) { DO_H; //输出一位控制位 } else DO_L; CLK_H; //时钟拉高 DELAY_TIME; CLK_L; DELAY_TIME; CLK_H; //手动拉出一个下降沿使DO和DI得以同时传送 if(DI) Data[1] = ref|Data[1]; //运用或运算按位存入Data[1]的8位 } delay_us(16); }`