STM32CubeMX USB CDC du PCV?
J'ai trouvé un grand nombre d'exemples, mais rien sur comment le faire "correctement" de STM32MXCube.
Comment puis-je créer un squelette de code de STM32CubeMX pour USB CDC port COM virtuel de communication (si possible STM32F4 Discovery)?
OriginalL'auteur user505160 | 2015-11-05
Vous devez vous connecter pour publier un commentaire.
Un STM32CubeMX projet pour la Découverte F4 avec CDC en tant que périphérique USB doit travailler hors de la boîte. En supposant que vous utilisez une mise à jour STM32CubeMX et de la bibliothèque:
Dans l'onglet de l'horloge vérifier la source d'horloge est HSE HCLK. Elle doit donner 168 MHz HLCK et 48 MHz dans les 48 MHz (USB). Vérifier qu'il n'y est pas rouge, n'importe où.
Enregistrer le projet
Générer le code (j'ai utilisé SW4STM32 toolchains)
Construire (vous pouvez avoir besoin pour passer en interne CDT constructeur vs GNU make).
Maintenant ajouter un peu de code pour envoyer des données sur le port COM et voila il devrait fonctionner.
En fait, la partie la plus délicate est de ne pas essayer de faire tout "CDC" l'accès jusqu'à ce que l'hôte USB se connecte (pas de CDC configuration encore)
Voici comment j'ai fait pour rapide émettent test:
Dans le fichier usbd_cdc_if.c
Dans le fichier principal.c
Dès que vous branchez le câble micro USB (CN5) données du CDC va commencer à afficher sur le terminal hôte.
Qui fonctionne. Je peux voir "bonjour" sur le terminal (vous pouvez avoir besoin d'installer un pilote, http://www.st.com/web/en/catalog/tools/PF257938).
Pour la réception, il doit d'abord être armés, dire, a commencé par un premier appel à USBD_CDC_ReceivePacket() dans un bon endroit. Pour qu'il puisse être CDC_Init_FS.
Ensuite, vous pouvez manipuler les données comme il arrive dans CDC_Receive_FS et le réarmement de la réception de nouveau à partir d'ici.
Qui fonctionne pour moi.
Pourquoi avez-vous commutateur de construire (vous pouvez avoir besoin pour passer en interne cdt buidler vs gnu make )?
Il y a un changement dans usbdesc.c qui doit être fait pour le faire fonctionner, 0x00, /* bDeviceClass */ changé à 0x02. Peut-USB experts mis cela pourquoi?
selon SW4STM32 Cube MX version et votre "msys" version vous pouvez gnu make (appel sh) construire l'erreur due à l' "(" dans la ligne de commande
à droite, j'ai remarqué le problème sur l'installation de Win 7 et que vous trouvez la contourner 😉 je n'ai remarqué st à ce sujet peut-être qu'il sera corrigé ...un jour?
OriginalL'auteur Michel Sanches
Il y a un certain nombre de STM32F4 Discovery conseils soutenue par la STM32Cube logiciel, et vous n'avez pas dit qui vous êtes, mais j'ai eu exactement le même problème avec la Découverte de conseil avec le F401VCT MCU.
Après l'installation de la STM port COM virtuel pilote, Gestionnaire de Périphériques de Windows a montré une STMicroelectronics port COM virtuel, mais avec un avertissement jaune marque. Le port COM n'était pas accessible avec une application de terminal (Mastic).
Finalement, j'ai trouvé qu'il y est un problème avec le code source de la sortie de la STMCube programme. Mais il y a une solution simple:
Seulement et sélectionnez CDC Port Virtuel COM à partir de la MiddleWares
USB_Device déroulante.
#define USB_HS_MAX_PACKET_SIZE
de 512 256.#define CDC_DATA_HS_MAX_PACKET_SIZE
de 512 256.Après cela, le jaune d'avertissement disparu du Gestionnaire de Périphériques, et j'ai pu recevoir des données à l'CDC_Receive_FS fonction (en usbd_cdc_if.fichier c) lors de l'utilisation de Mastic. Sachez que ces définitions de retour à leurs valeurs incorrectes chaque fois que le STM32Cube génère le code, et je n'ai pas trouvé un moyen de contourner cela encore.
J'espère que cette aide.
OriginalL'auteur iChal
iChal fixer travaillé pour supprimer l'avertissement jaune marque.
Je tiens à mentionner que
USB_HS_MAX_PACKET_SIZE
est maintenant dans usbd_def.h etCDC_DATA_HS_MAX_PACKET_SIZE
est dans usbd_cdc.hJe suis en utilisant STM32CubeMX v4.11.0 STM32Cube v1.0 et le STM32F401C-DISCO.
Sur la poursuite des travaux, je n'ont plus qu'à définir la taille de segment de mémoire pour une plus grande valeur.
Je suis un réglage à 0x600 que j'ai aussi FreeRTOS activé. Je suis à l'aide IAR EWARM, de sorte que le changement est fait dans linker script
stm32f401xc_flash.icf
.OriginalL'auteur Richard Kadrmas