现在已用协议传输模式实现了键盘按键的有效输入,请问这两个指示灯应该怎么实现呢?
您好,CH9329芯片在监测到主机按下Caps Lock和Num Lock时会通过串口输出当前的指示信息,具体见串口通信协议文档的CMD_GET_INFO指令。链接地址:http://www.wch.cn/downloads/CH9329EVT_ZIP.html
您好!我选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;
}
}
大佬救命
您好 ,指示灯主动通过串口通知的版本的在新版本的CH9329芯片上才支持的,按照如下方式,您先看下当前使用芯片的版本号信息。“设备管理器”->选择CH9329对应的“键盘”->右击“属性”->"详细信息"->"硬件ID",若如下字符REV版本号低于V3400则不支持该功能,建议按照如下联系方式,向我们申请样片测试。
我帖子里的版本比这个还低 @TECH39帮我看下呗
楼上遇到的问题,和版本号没有关系的,请知悉。您可以单独联系我,我们帮您远程看下问题所在。我将微信号私信你。
您好,我新买了版本是rev3400的芯片进行测试,芯片的版本是v1.4,我看到数据手册上只写了v1.0和v1.1,芯片仍然是无法识别计算器,请问这是哪里出错了。
请问可以私信一下详细交流吗
请问可以私信一下详细交流吗
您好,已通过微信,可具体沟通细节问题。
我用串口连接9329和PC,收发信息都正常,可以发送按键数据和接收返回信息,也可以查询到芯片版本等信息,但是接在PC上的另一个普通键盘,第一次按下Num Lock芯片不会接收到串口信息,第二次及以后再按都可以正常接收到,复位芯片以后还是这个情况,请问这是什么问题啊?
您好,如上现象不太正常,芯片是不会记录第几次按下按键的状态的。此外您可以发邮件和我沟通,我确认下您使用的版本。tech@wch.cn
就是这两个版本信息吧?我的9329直接焊在串口芯片上了,所以只能用USB模式查看信息
您好,如上版本可正常支持其他键盘有指示灯变化,CH9329串口输出对应状态的功能。不排除一个可能,就是您使用的计算机并没有通过USB通道将第一次的NumsLock状态下传给CH9329芯片。可使用USB抓包工具捕获下CH9329的USB通道数据,看下第一次实际有没有下传USB数据。
这张图是普通键盘Num Lock灯亮时9329复位,然后按Num Lock的数据,9329未收到相应状态改变的信息
这张图是普通键盘Num Lock灯灭时9329复位,然后按Num Lock的数据,9329收到相应状态改变的信息
请帮忙分析一下吧,谢谢