最近需要做USB,在PIC24FJ256GB106 的USB模块上要实现host 与device 双重角色,江湖人称OTG。目前还比较菜,啥都不会,先裸机跑跑。毕竟裸机最性感了,啥都能看得到,呵呵。
目前单模块功能分别跑起来倒是比较轻松的,移植就修改了些东西。很容易就裸奔起来了,但是当两个模块功能一起跑起来的时候就似乎问题大了。因为usb口就只有那么一个哈。因此要做切换的动作,切换一次就初始化一次USB模块,这个是必须的。不然双角色怎么跑哦...(此时OTG没有上场还)
在做切换时我采用了串口敲字符进行里面的mode变更,使用了串口的中断了...嘻嘻。但是有个问题是在host切换到了device模式下,再使用串口敲不来host模式了,似乎我的串口中断不管用了。
// 下面的while语句影响到了串口输入字符来切换host and device 功能
// 2010/7/15 注释while
//U1CONbits.USBEN = 1 ;
// Enable module & attach to bus
while(!U1CONbits.USBEN){U1CONbits.USBEN = 1;}
通过注释掉以上的while语句就可以实现串口的切换了,但是问题来了,这个是启动device模块的使能bit位啊!模块都不工作了切换有啥用呢?很是奇怪的问题,但到device 模块启动了我的中断串口就不能用了吗??
说了那么多,还是要上图啊!下面是实际的效果。作为从机是HID类,作为host为对U盘写入文件。
文章评论(0条评论)
登录后参与讨论