yangjf91 发表于 2011-3-15 15:08:53

求助!!!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();
}
只是根据时序图写的,不知道能不能用,希望得到大家的指导,谢谢!

chmingxin 发表于 2011-3-16 01:30:29

感觉这个IC不大好用,公司有做过一个产品,在低温下USB与PC连接不对,只要用烙铁焊一下,就可以了,但冷却之后又不行了。

yangjf91 发表于 2011-3-17 19:40:59

谢谢楼上您的回帖!

Honey_comb 发表于 2012-11-8 09:11:13

{:sad:}刚申请了2片CH376准备用单片机读一下USB手柄呢,求指教

zhongpeng123 发表于 2013-4-5 10:26:48

376是读U盘用的吧

i_kkyu 发表于 2013-4-5 18:42:04

374,没用过
页: [1]
查看完整版本: 求助!!!ch374调试usb手柄