- Notifications
You must be signed in to change notification settings - Fork1k
USB Host + MSC#1196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
USB Host + MSC#1196
Uh oh!
There was an error while loading.Please reload this page.
Conversation
14d21ef to4e4f213CompareUsage: Compile with: //includes#include"usbh_core.h"#include"usbh_msc.h"//handleUSBH_HandleTypeDef hUsbHostFS;//callbackstaticvoidUSBH_UserProcess (USBH_HandleTypeDef *phost,uint8_t id){/* USER CODE BEGIN CALL_BACK_1*/switch(id) {case HOST_USER_SELECT_CONFIGURATION:break;case HOST_USER_DISCONNECTION:break;case HOST_USER_CLASS_ACTIVE://ready!break;case HOST_USER_CONNECTION:break;default:break; }}//init callsvoidmy_init_routine() { ...USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS);USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS);USBH_Start(&hUsbHostFS); ..}//loop callvoidloop() { ..USBH_Process(&hUsbHostFS); ..}//read sample: it will read (sectors_to_read) * (sector size) bytesUSBH_StatusTypeDef ret = USBH_MSC_Read(&hUsbHostFS, lun, sector_addr, buffer, sectors_to_read); |
Tested with success in: STM32F407VET6, STM32F407IGT6 and STM32F407ZGT6. |
thanks a lot for this PR. |
MS1987 commentedOct 27, 2020
@fpistm Can this PR be merged now? |
I think the only important question to merge it is:
I'm currently enabling PCD just to use the pins definitions. And soon I will receive a board with two usb, so I will test it and join the pcd/hcs irq handler. I can send all changes. I just need that@fpistm point the direction for me :-) |
fpistm commentedOct 30, 2020 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Yes the "or" have to be added. I'm currently updating the files generation, I will add the HCD.
I don't know but I think as a first step it should be better to handle one at a time. |
I'm about to receive a board that have two USB. One in OTG HS and other in OTG FS. The central idea is to use one to read a thumb drive (USB Host) and the other to connect to the computer and share the pendrive as mass storage. But I really agree with you. For the first version, we must keep what is tested and working. As soon I test that dual mode on that board, I will let you know if it works. Thanks. |
Main issue would be the USBD part as currently if we enable both FS and HS this will not work, I guess. |
Indeed. I don't know if it will work. I found some stm32 forum messages saying that it works. But only testing to confirm it or not. |
Right. |
stm32duino/Arduino_Core_STM32#1196Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
stm32duino/Arduino_Core_STM32#1196Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
Bob-the-Kuhn commentedDec 7, 2020
GLad to see work in this area. Does this replace PR#1088? |
@fpistm I pushed a version that will allow PCD and HCD working together. To avoid conflict and to not break compatibility, I added a new config to select HS on HCD ( It easier to just show the possible combinations: To use HCD on FS: #defineHAL_HCD_MODULE_ENABLED#defineUSBHOST To use HCD on HS: #defineHAL_HCD_MODULE_ENABLED#defineUSBHOST#defineUSE_USBHOST_HS.// <<<--- new macro, to select HS on HCD To use PCD on FS: (current code, just to illustrate) #defineHAL_PCD_MODULE_ENABLED#defineUSBCON To use PCD on HS: (current code, just to illustrate) #defineHAL_PCD_MODULE_ENABLED#defineUSBCON#defineUSE_USB_HS And we can to combine then:HCD on FS + PCD on HS: // HCD on FS#defineHAL_HCD_MODULE_ENABLED#defineUSBHOST// PCD on HS#defineHAL_PCD_MODULE_ENABLED#defineUSBCON #defineUSE_USB_HS Or: HCD on HS + PCD on FS: // HCD on HS#defineHAL_HCD_MODULE_ENABLED#defineUSBHOST#defineUSE_USBHOST_HS// PCD on FS#defineHAL_PCD_MODULE_ENABLED#defineUSBCON |
rhapsodyv commentedDec 11, 2020 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
With this PR plus#1088 I'm able to use fully mix usb host / usb device mass storage. Using OTG HS to host the thumb drive + using OTG FS to uses CDC + MSC, to share the thumb driver or the SD Card with the Computer. |
stm32duino/Arduino_Core_STM32#1196Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
fpistm commentedMay 3, 2021 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
hi@rhapsodyv
I though this one replace#1088 ? Thanks |
This is exclusively to USB host: for example, enable a board to use a usb disk drive using OTG (hs or fs - hcd). #1088 is to share the board media with a computer/using using usb OTG. For example: to share a board sd card with a windows computer as a mass storage. I merged both PRs in a local branch, so we can, for example: allow the board access and share a usb disk drive with the computer. We are actively using it on Marlin. The only issue with 1088 is the name of the usb class... it should be renamed to something like "USBComposite", instead of only "USB". |
It's even allow a mouse to be attached to a board heheheh: IMG_0523.MOV |
gordo3di commentedJul 19, 2021
Well thats cool! I'm trying to implement this for the newer skr v2 board any tips? I've been looking through this thread and#1088 but I'm not sure how much has already been implemented since then. Thanks |
It's already done on Marlin:MarlinFirmware/Marlin#22354 |
gordo3di commentedJul 19, 2021
Interesting. Thank you. Now I have to figure out why it's not mounting for me. |
rtek1000 commentedJan 17, 2022 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Hello, Is USB HID Host (keyboard) working too? Thank you. |
Mouse is working, keyboard should work too: |
Very interesting, I'm just looking around to see how to build a USB keyboard to legacy machine adapter (Commodore 128D in this case), and this would be extremely useful - I don't think I have the energy to dive into using raw CubeMX for it. So what's this waiting for in terms of being able to be merged, it looks like the PCD+HCD test was successful... I guess it's just down to time from@fpistm |
rtek1000 commentedJan 27, 2022 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
Hello, The USB Host library of the STM32 line is still very precarious, just didactic. If you want something more fluid, check out this other alternative, which can accept the touchpad keyboard. Because it has the HUB part: |
quiret commentedFeb 15, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
I really wonder about the status of this PR since it has not been merged yet and there appear to be conflicts now. I would greatly appreciate any statement by participating parties. The features described in this PR seem amazing and worthwhile for the embedded world. |
Uh oh!
There was an error while loading.Please reload this page.
Pull Request template
Summary
This PR fixes/implements the followingbugs/features
It will allow STM users to use USB Host feature with MSC support.
I tried to follow the same development workflow from the usb device midleware. I created a folder
cores/arduino/stm32/usb_host, and put the conf and the references to the middleware.There's some work to do yet:
For example, the PinMap_USB_OTG_FS in the PeripheralPins.c for each variant. Do we need update all variants to include a "or" in the
#ifdef?Can HCD and PCD be enabled at same time? If so, we need to join IRQ handler.
It works if USBCON is disabled, and HAL_HCD_MODULE_ENABLED and USBHOST are enabled.
Sorry if I'm missing something. It's my first PR in this project, and it may take sometime to get everything as it should be.
Related to:#687