【CH554式改评测】CH554和libusb(上)
<div class='showpostmsg'> 本帖最后由 ljj3166 于 2018-4-16 16:31 编辑开始进入到USB的部分了
也是这块片子的一大卖点
玩了一下例程中的HID和KM
demo实现起来很简单
稍微了解一下USB的协议
就能看个大致了
USB协议底层这些玩意儿
还是不去深究了,头很晕
重点是把一大堆描述符折腾清楚
基本上就能跑起来
想想现在集成USB协议的CH554真是方便
全硬实现
查查寄存器,撸撸数据,哪里不会点哪里
真棒
楼主使用巨硬的OS
usb的驱动
虽然沁恒也有提供
但毕竟封装了起来
不能愉快滴玩耍
所以想到无敌的libusb-win32
楼主使用的是CompatibilityHID
源码里面使用的VID是5131,PID是2007
看看设备描述符:
注意高低字节的次序
还有个很重要的地方
配置描述符:
pipe的端点描述
后面通信,这个得要对的上
先把windows驱动换了吧
祭出无敌的libusb
找到VID、PID对应的USB设备
看准咯,把设备整坏了憋怪楼主
装13必备
然后是一些基本的安装操作
不啰嗦
骚气侧漏
像这么牛掰的片子
楼主手上还有6个
while(1)
{
if(Ready&& (Ep2InKey==0))
{
Enp2BlukIn( );
mDelaymS( 100 );
}
// mDelaymS( 100 ); //模拟单片机做其它事
if(send_flag == 0x01)
{
printf(Ep2Buffer);
send_flag = 0x00;
memset(Ep2Buffer, '\0', THIS_ENDP0_SIZE);
}
else {}
}
稍微改一下单片鸡的代码
大概意思就是收到数据后
把接收到的数据打印出来
case UIS_TOKEN_OUT | 2: //endpoint 2# 端点批量下传
if ( U_TOG_OK ) // 不同步的数据包将丢弃
{
len = USB_RX_LEN; //接收数据长度,数据从Ep2Buffer首地址开始存放
// for ( i = 0; i < len; i ++ )
// {
// Ep2Buffer = Ep2Buffer;// ^ 0xFF; // OUT数据取反到IN由计算机验证
// }
// UEP2_T_LEN = len;
UEP2_T_LEN = 8;
Ep2Buffer = 'g';
Ep2Buffer = 'o';
Ep2Buffer = 't';
Ep2Buffer = ' ';
Ep2Buffer = 'd';
Ep2Buffer = 'a';
Ep2Buffer = 't';
Ep2Buffer = 'a';
UEP2_CTRL = UEP2_CTRL & ~ MASK_UEP_T_RES | UEP_T_RES_ACK; // 允许上传
send_flag = 0x01;
}
USB中断里头
接收到数据后,返回“got data”,并置位send_flag
怕编辑器崩溃,未完待续,请看下集......
此内容由EEWORLD论坛网友ljj3166原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 老版本的libusb、????? mars4zhu 发表于 2018-4-20 21:55
老版本的libusb、?????
不要被名字迷惑:lol ljj3166 发表于 2018-4-20 22:05
不要被名字迷惑
哦,原来是libusb-win32,这个好像已经停止更新了,推荐使用libusb。
我用的libusb。
页:
[1]