WCH沁恒单片机
直播中

李微波

7年用户 929经验值
私信 关注
[问答]

请问ch9329芯片可以用来设计一个带caps lock和num指示灯的usb键盘吗?

现在已用协议传输模式实现了键盘按键的有效输入,请问这两个指示灯应该怎么实现呢?
  

回帖(3)

陈玲

2022-6-28 15:05:26
您好,CH9329芯片在监测到主机按下Caps Lock和Num Lock时会通过串口输出当前的指示信息,具体见串口通信协议文档的CMD_GET_INFO指令。
举报

孙燕冉

2022-6-28 15:05:34
您好!我选stm8s在iar中编程,
      第十二个字节返回值一直是0x00,即usb未连接计算器或未识别。第十一个字节返回值一直是0x00,即三个指示灯全是熄灭。

    usb已经正常连接,win10设置里的‘鼠标,键盘和笔’一栏中,可以看到‘wch  uart to kb-ms-v1,1 ’此设备,
也可以正常键盘输入,除了三个指示灯一切正常(笔记本按下caps lock,我自己制作的键盘不能亮起相应的指示灯)。
    串口通信模式选择了模式0;芯片工作模式0和1都试过,都不能实现指示灯功能
请问这是什么缘故。






u8 num=0;//定义全局变量
u8 buff[13];


main()
{
...........
//uart发送cmd-get-info指令
                Uart1_SendData(0x57);
                Uart1_SendData(0xAB);
                Uart1_SendData(0x00);
                Uart1_SendData(0x01);
                Uart1_SendData(0x00);
                Uart1_SendData(0x03);
               
}


/*    串口1接收数据中断服务函数    */
#pragma vector = 20              //设置串口1接收中断向量号 = 20
__interrupt void UART1_RX_RXNE(void)
{         


  UART1_SR_RXNE = 1;     //清除中断标志
  buff[num] = UART1_DR;        //读出串口接收到的数据
  num=num+1;
  if(num==14)
    num=0;

  //CAPS LOCK =1;SCROLL LOCK=0
   if((buff[13]==0xBE)&&(buff[12]==0x31)&&(buff[11]==0x01)&&(buff[10]==0x02)
     &&(buff[9]==0x00)&&(buff[8]==0x00)&&(buff[7]==0x00)&&(buff[6]==0x00)&&(buff[5]==0x00)
       &&(buff[4]==0x08)&&(buff[3]==0x81)&&(buff[2]==0x00)&&(buff[1]==0xAB)&&(buff[0]==0x57))
  {
    PD_ODR_bit.ODR1=1;
    PD_ODR_bit.ODR4=0;
  }
}
举报

h1654155275.5994

2022-6-28 15:05:40
您好 ,指示灯主动通过串口通知的版本的在新版本的CH9329芯片上才支持的,按照如下方式,您先看下当前使用芯片的版本号信息。“设备管理器”->选择CH9329对应的“键盘”->右击“属性”->"详细信息"->"硬件ID",若如下字符REV版本号低于V3400则不支持该功能,建议按照如下联系方式,向我们申请样片测试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分