选择SLAVEFIFO工作方式寄存器设置如下用8位工作方式,于是按照数据手册上PORTD端口可以复用可是实际并非如此是不是数据手册上有误呢:TDININT代码(使用EP6作为IN传输)
CPUCS = 0x12;
SYNCDELAY;
IFCONFIG = 0x43; //使用外部时钟 选择同步工作方式 选择slave fifo 工作模式
SYNCDELAY;
EP2CFG = 0x00; //bit1:0为0:0设置为四缓冲区域 bit5:4设置为1:0表示批量传输bit3为0表示缓冲区大小为512字节;
//bit7为1代表端点有效,bit6为0代表OUT bit6为1代表IN
SYNCDELAY;
EP4CFG = 0x00;
SYNCDELAY;
EP6CFG = 0xE0; //四缓冲大小1K;
SYNCDELAY;
EP8CFG = 0x00;
SYNCDELAY;
FIFORESET = 0x80; //avoid nak_all race condition
SYNCDELAY;
FIFORESET = 0x06;
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;
PINFLAGSAB = 0xE2; // EP6 FF状态FLAGB
SYNCDELAY;
PORTACFG = 0x00; //scls被屏蔽!(0X40)
SYNCDELAY;
FIFOPINPOLAR = 0x00; // PKTEND SLOE SLRD SLWR EE EF 皆为低电平有效
SYNCDELAY;
EP6FIFOCFG = 0x08; //AUTOIN=1,选择8位数据宽度
SYNCDELAY;
然后OED使能,设置了几个管退为高电平,端口无输出!!!!!!
于是我 在TDININT当中在设完EP6FIFOCFG = 0x08;后将寄存器读出来与0x05也就是寄存器默认值做比较发现此寄存器内的数值正是0x05!!!!也就是说BIT0位始终为1按照数据手册第9章所述只要该寄存器BIT0位为1,那么PORTD就不能作为复用引脚!
问题来了我明明设置了EP6FIFOCFG寄存器为什么还是默认值!!实在难以理解请高人指点,最好实践下,感激不尽!!!!此致敬礼 |