rel="File-List" href="file:///C:%5CDOCUME%7E1%5Czjujoe%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Czjujoe%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso">
公司需要支持 ps/2 键盘, 但是 PXA310 上没有 ps/2 控制器。 硬件让研究一下 gpio 模拟的可能性。
仔细看了一下 ps/2 协议, 它主要是两根线, 一根 CLK, 一根 DATA. CLK 的频率大概是10k – 30k . 对应一个 CLK 周期为 30us – 100us。
当 ps/2键盘 (或者鼠标)需要向主机发送信号时,它会先拉低时钟信号, 然后发出 1 个起始位,8 个数据位, 1 个奇偶校验,1个停止位。如下图:
rel="File-List" href="file:///C:%5CDOCUME%7E1%5Czjujoe%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
这意味着如果我们使用 gpio 模拟 ps/2 接口, 那么在收到 CLK (由高到低)的中断时,必须在 1 个时钟周期内去访问 DATA. 否则数据就会丢失。
这意味着我们的操作系统必须保证30us-100us的实时性! 目前我们的 Linux 为 2.6 标准内核,不能满足这个要求!