【 ST NUCLEO-H743ZI测评】(5)USB转串口
<div class='showpostmsg'>今天发现了一个帖子STM32H743 nucleo won't work in USB OTG FS该文章中有一个资料包 STM32H743_USBCDC。按照资料中的提示终于完成了测试。本实验中的设备是由ST公司提供,特此感谢!详细资料请访问官方网址在前几次的USB实验中都没有成功,不管怎么设置就发现不了USB设备。在这期间找了很多资料。也没有发现是硬件问题还是设置问题。下载到资料包后。就将资料中的项目进行了编译,下载启动板子终于看到串口设备了。通过查看资料发现问题所在。原来是MX_USB_DEVICE_Init()函数中的一个BUG,只要在程序中加入HAL_PWREx_EnableUSBVoltageDetector();函数就可以自举了。
void MX_USB_DEVICE_Init(void)
{
/* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */
/* USER CODE END USB_DEVICE_Init_PreTreatment */
/* Init Device Library, add supported class and start the library. */
if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK)
{
Error_Handler();
}
if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK)
{
Error_Handler();
}
if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK)
{
Error_Handler();
}
if (USBD_Start(&hUsbDeviceFS) != USBD_OK)
{
Error_Handler();
}
/* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */
HAL_PWREx_EnableUSBVoltageDetector();
/* USER CODE END USB_DEVICE_Init_PostTreatment */
}
下面就将这一过程简单叙述一下。
首先在STM32cubeMX中设置USB设备。
将USB设备设置成USB_OTG_FS类型。启用VBUS功能。检查一下对应的管脚是不是与原理图一致。且设置成High模式。
在Middleware中设置USB的高级设备类型为CDC设备。USB设置过程就算完成。
对于CDC类型的USB设备,需要更大的内存堆栈。
将内存堆栈修改为0x700这一设置基本就完成了。生成代码。在MX_USB_DEVICE_Init()函数加入HAL_PWREx_EnableUSBVoltageDetector();函数。编译下载测试。
可以发现在设备中USB转换的串口设备。
总结:由于不是十分的熟悉STM32在测试中很难发现这种系统级的BUG。通过这次测试对ST公司的产品有了更进一步的认识。
此内容由EEWORLD论坛网友bigbat原创,如需转载或用于商业用途需征得作者同意并注明出处
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>解决问题的能力很强,我在开发的时候有时候一个小小的问题可能会卡四五个小时,让人崩溃</p>
页:
[1]