您好!
我想使用 tm4c123gh下午6发送 ps/2键盘命令。 ps2dev 库通过以下方式完成 PS2写入:
int PS2dev::write(unsigned char data) {
delayMicroseconds(BYTEWAIT);
unsigned char i;
unsigned char parity = 1;
if(digitalRead(_ps2clk) == LOW) {
return -1;
}
if(digitalRead(_ps2data) == LOW) {
return -2;
}
golo(_ps2data);
delayMicroseconds(CLKHALF);
// device sends on falling clock
golo(_ps2clk); // start bit
delayMicroseconds(CLKFULL);
gohi(_ps2clk);
delayMicroseconds(CLKHALF);
for(i=0; i<8; i++) {
if(data & 0x01) {
gohi(_ps2data);
} else {
golo(_ps2data);
}
delayMicroseconds(CLKHALF);
golo(_ps2clk);
delayMicroseconds(CLKFULL);
gohi(_ps2clk);
delayMicroseconds(CLKHALF);
parity = parity ^ (data & 0x01);
data = data >> 1;
}
// parity bit
if(parity) {
gohi(_ps2data);
} else {
golo(_ps2data);
}
delayMicroseconds(CLKHALF);
golo(_ps2clk);
delayMicroseconds(CLKFULL);
gohi(_ps2clk);
delayMicroseconds(CLKHALF);
// stop bit
gohi(_ps2data);
delayMicroseconds(CLKHALF);
golo(_ps2clk);
delayMicroseconds(CLKFULL);
gohi(_ps2clk);
delayMicroseconds(CLKHALF);
delayMicroseconds(BYTEWAIT);
return 0;
}
但是、这是一种阻塞方法。 我是否可以通过任何方法来实现这一目标? 我可以将 SPI 的时钟速度有多慢? 基本上、我需要使用时钟生成串行数据、我是否可以将 SSI 外设的时钟频率设置为低至10-16.7kHz?
但是