完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想通过动态改变R16_UEPx_DMA和R8_UEPx_T_LEN寄存器,免去内存上数据搬移,直接使用USB多个包发送一段比较长的内存上的数据,不知道是否可行。可是我试了好几次都失败了,发出去的数据始终是某段内存,一直不发生改变。
int C_USBHD_Dev::Send_Pack(u8 endp, void *p, u16 len) { if(endp&0x80 == 0){ return 1; } endp &= 0x7f; if(endp >= 8){ return 1; }else{ regs->*C_USB_MOD_REG[endp-1] &= ~(0x0f << C_USB_MOD_SFT[endp-1]); regs->UEPx_DMA[endp].L16b = ((u16)(u32)p)&0xfffc; regs->UEPx_TLEN_CTRL[endp].T_LEN = len; regs->*C_USB_MOD_REG[endp-1] |= RB_UEP2_TX_EN << C_USB_MOD_SFT[endp-1]; MODIFY_REG(regs->UEPx_TLEN_CTRL[endp].CTRL, MASK_UEP_T_RES, UEP_T_RES_ACK); } } |
|
相关推荐
1个回答
|
|
问题已经解决了,是内存没有对齐,导致写入R16_UEPx_DMA寄存器失败。
|
|
|
|
只有小组成员才能发言,加入小组>>
474 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2873 浏览 2 评论
2361 浏览 1 评论
814浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
640浏览 1评论
497浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
364浏览 1评论
639浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:22 , Processed in 0.963395 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号