|
發表於 2013年1月26日 02:26 PM
|
顯示全部樓層
最近在試USB時發現一件事:
開機,不開啟USB功能,插USB入PC,PC發現 "未知的裝置" !!
USB開關功能使用 GPIO(PB10)輸出"0"(gpio_clear(GPIOB, GPIO10)) , 驅動PNP三極管作D+ (pull-up) +3.3V.
但是 GPIO(PB10)設置為GPIO_CNF_OUTPUT_OPENDRAIN模式,
當要GPIO(PB10)輸出"1"(gpio_set(GPIOB, GPIO10)), 驅動PNP三極管關閉.... 卻發生驅動不足(驅動電壓&電流太小).
必須將 GPIO(PB10)設置為GPIO_CNF_OUTPUT_PUSHPULL模式,
才能使用GPIO(PB10)輸出"1", 驅動PNP三極管關閉.
====== usb_devo8.c =====
void USB_Enable(u8 use_interrupt)
{
gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ,
GPIO_CNF_OUTPUT_OPENDRAIN, GPIO10);
gpio_set(GPIOB, GPIO10);
rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_USBEN);
USB_Init();
if(use_interrupt) {
nvic_enable_irq(NVIC_USB_LP_CAN_RX0_IRQ);
}
}
|
|