其他分享
首页 > 其他分享> > FAQ0094 AT32 USB 不断开连接, USB 设备重新枚举操作

FAQ0094 AT32 USB 不断开连接, USB 设备重新枚举操作

作者:互联网

USB 不断开连接, USB 设备重新枚举操作


适用型号: AT32F403, AT32F413, AT32F403A, AT32F415

Questions:USB 不断开连接, USB 设备重新枚举操作

Answer:
AT32F403 和 AT32F413, AT32F403A, AT32F415 USB 设备重新枚举控制是不一样的, 以下分别进行介绍
1. AT32F403 和 AT32F413 控制方式
直接在USB 初始化后 while ( 1 )中调用, 在电脑上可以看到 USB 会有不断枚举过程

Power_Off ();
Delay_ms(3000);
Power_On ();
Delay_ms(3000);

RESULT Power_On(void)
{
  u16 wRegVal;
  pInformation->Current_Configuration = 0;
  /*** CNTR_PWDN = 0 ***/
  wRegVal = CTRL_FRST;
  _SetCTRL(wRegVal);
  /* USB interrupts initialization */
  /* clear pending interrupts */
  _SetINTSTS(0);
  wInterrupt_Mask = IMR_MSK;
  /* set interrupts mask */
  _SetCTRL(wInterrupt_Mask);
  bDeviceState = UNCONNECTED;


RESULT Power_Off ()
{
  _SetCTRL(CTRL_FRST);
  /* clear interrupt status register */
  _SetINTSTS(0);
  /* Disable the Pull-Up*/
  //USB_Cable_Config(DISABLE);//
/* switch-off device */
_SetCTRL(CTRL_FRST + CTRL_PDWN);
}

2. AT32F403A 控制方式
USB SOF控制寄存器( USB_SOFEN) 地址偏移: 0x60
 
直接在USB 初始化后 while ( 1 )调用, 在电脑上可以看到 USB 会有不断枚举过程

Power_Off ();
Delay_ms(3000);
Power_On ();
Delay_ms(3000);

#define SOFEN ((__IO unsigned *)(RegBase + 0x60))
#define _SetSOFEN(wRegValue) (*SOFEN = (uint16_t)wRegValue)
void Power_On(void)
{
  u16 wRegVal;
  wRegVal = 0x0000;
  _SetSOFEN(wRegVal);
}

void Power_Off(void)
{
  u16 wRegVal;
  wRegVal = 0x0002;
  _SetSOFEN(wRegVal);
}

3. AT32F415 控制方式
OTG_FS设备控制寄存器(OTG_FS_DCTL) 地址偏移: 0x804  
 
直接在USB 初始化后 while ( 1 )调用, 在电脑上可以看到 USB 会有不断枚举过程

Power_Off (&USB_OTG_dev);
Delay_ms(3000);
Power_On (&USB_OTG_dev);
Delay_ms(3000);

void Power_On(USB_OTG_CORE_HANDLE *pusbdev)
{
  USB_OTG_DCTL_Type dctl_cfg;
  dctl_cfg.u32val = 0;
  dctl_cfg.b.sftdis = 0;
  USB_OTG_WRITE_R32 (&pusbdev->regs.DREGS->DCTRL, dctl_cfg.u32val);


void Power_Off(USB_OTG_CORE_HANDLE *pusbdev)
{
  USB_OTG_DCTL_Type dctl_cfg;
  dctl_cfg.u32val = 0;
  dctl_cfg.b.sftdis = 1;
  USB_OTG_WRITE_R32 (&pusbdev->regs.DREGS->DCTRL, dctl_cfg.u32val);
}  

标签:断开连接,dctl,USB,Power,cfg,OTG,FAQ0094,wRegVal
来源: https://blog.csdn.net/qq_19947653/article/details/113746890