求助!!!ch374调试usb手柄
大家好!我是个新手,最近对CH374感兴趣,要通过它和mega6调游戏手柄,网上资料太少,CH374EVT包不知道为什么用不了,根据技术手册时序图只写了些子函数,但要输什么具体命令却不知道,尝试了一下不成功,不知道程序该怎么写,希望大家能提供些信息,谢谢!#define usb_port1 PORTA
#define usb_ddr1 DDRA
#define usb_pin1 PINA
#define usb_port2 PORTB
#define usb_ddr2 DDRB
#define usb_pin2 PINB
#define usb_A0 1<<PA4
#define usb_RD 1<<PA5
#define usb_WR 1<<PA6
#define usb_CS 1<<PA7
#define usb_INT 1<<PA0
#define set_usb_A0() (usb_port1 |= usb_A0)
#define clr_usb_A0() (usb_port1 &= ~usb_A0)
#define set_usb_RD() (usb_port1 |= usb_RD)
#define clr_usb_RD() (usb_port1 &= ~usb_RD)
#define set_usb_WR() (usb_port1 |= usb_WR)
#define clr_usb_WR() (usb_port1 &= ~usb_WR)
#define set_usb_CS() (usb_port1 |= usb_CS)
#define clr_usb_CS() (usb_port1 &= ~usb_CS)
#define set_usb_INT() (usb_port1 |= usb_INT)
#define clr_usb_INT() (usb_port1 &= ~usb_INT)
void delay(int s)
{
while(s--);
}
void usb_init()
{
usb_ddr1 |=(usb_A0|usb_RD|usb_WR|usb_CS);
usb_port1|=(usb_A0|usb_RD|usb_WR|usb_CS);
usb_port1|= ( usb_INT);
usb_ddr2 =0x00;
DDRC=0xff;
PORTC=0xff;
delay(50);
}
unsigned char usb_read()
{
unsigned char data;
clr_usb_WR();
set_usb_WR();
delay(140);
clr_usb_A0();
delay(10);
clr_usb_RD();
delay(35);
data=usb_pin2;
delay(10);
set_usb_RD();
set_usb_CS();
set_usb_A0();
return data;
}
unsigned char usb_write_data(unsigned char data)
{
clr_usb_RD();
set_usb_RD();
delay(140);
clr_usb_A0();
delay(10);
clr_usb_WR();
delay(35);
usb_port2=data;
delay(10);
set_usb_WR();
set_usb_CS();
set_usb_A0();
}
unsigned char usb_write_cmd(unsigned char cmd)
{
clr_usb_RD();
set_usb_RD();
delay(140);
set_usb_A0();
delay(10);
clr_usb_WR();
delay(35);
usb_port2=cmd;
delay(10);
set_usb_WR();
set_usb_CS();
set_usb_A0();
}
只是根据时序图写的,不知道能不能用,希望得到大家的指导,谢谢! 感觉这个IC不大好用,公司有做过一个产品,在低温下USB与PC连接不对,只要用烙铁焊一下,就可以了,但冷却之后又不行了。 谢谢楼上您的回帖! {:sad:}刚申请了2片CH376准备用单片机读一下USB手柄呢,求指教 376是读U盘用的吧 374,没用过
页:
[1]