按照musbhdrc指导手册给芯片写驱动,使用CPU方式逐个往USB的FIFO寄存器可以实现数据收发了,但是现在要改成使用USB内部的DMA。
遇到的问题是:数据通信用的bulk模式,无论数据长短(大于或小于512字节)都使用DMA的MODE1模式发送,用DMA第一次发送短数据数据正常,用DMA第二次发送的数据是全0,或者有时候第一次发数据就是发的全0。
按照手册定义的要设置寄存器:
INTRTXE = 00010000(使用端点4发送)
TXCSR2 = 10110100(TXCSR高8位)
CNTL1 = 0000 0110 0100 1111;
设置完CNTL1寄存器后就会发送数据,随后进入终端,如果是短数据会手动设置TxPktRdy = 1。
按照手册配的寄存器,但是不知道问题出在哪里,DMA发送完后读CNTL1寄存器可以看到D0位已经置0了,应该是关闭了DMA,不需要手动关的样子。不知道是不是我的寄存器配置的问题导致发送出去的数据是全0的。求各位大佬指点1