2015-08-13 3 views
-1

J'essaie de communiquer avec mon LaunchPad MSP430F5529 que je viens d'apprendre à propos des microcontrôleurs et qui présente de sérieux problèmes.Communication msp430 avec l'ordinateur

J'ai téléchargé le paquet développeur MSP430 USB avec des exemples de Texas Instruments et j'utilise IAR comme IDE.

À l'intérieur du dossier exemples, il existe les mêmes exemples pour différents protocoles: HID, CDC, Composite, MSC et SYSBIOS.

J'ai décidé de cliquer sur HID et, à l'intérieur de ce dossier, j'ai exploré le dossier DataPipe et je suis allé à H0_SimpleSend, qui semble être le premier et le plus simple exemple de projet. A l'intérieur, il semble avoir de nombreux dossiers et fichiers pour le projet tels que USB_Config, USB_app, IAR, GCC, CCS_GCC, CSS, et les fichiers system_pre_init.c, main.c, hal.h, et hal.c . A l'intérieur du dossier IAR se trouvait un projet et un fichier d'espace de travail. J'ai donc chargé le projet en espérant qu'il était aussi simple que de construire le projet sur ma carte et d'exécuter le débogage avec Termite pour communiquer avec un port COM. Lorsque je branche, mes fenêtres MSP430F5529LP ont deux ports COM utilisés, l'un dit MSP Application UART1, et l'autre dit MSP Debug Interface et ils sont toujours des ports COM consécutifs (respectivement COM11 et COM10, ou COM12 et COM13, respectivement .). Je suppose que je veux l'UART, donc j'ai mis Termite à communiquer avec l'application UART1 avec 8 bits de données et 1 bit d'arrêt, pas de bits de parité.

Ensuite, j'ai construit le programme, qui a bien construit, et l'a chargé sur ma carte. En passant par le programme, cela ne semble jamais fonctionner. il obtient toujours bloqué sur ce bloc:

// This function begins the USB send operation, and immediately 
// returns, while the sending happens in the background. 
// Send timeStr, 9 bytes, to intf #0 (which is enumerated as a 
// COM port). 1000 retries. (Retries will be attempted if the 
// previous send hasn't completed yet). If the bus isn't present, 
// it simply returns and does nothing. 
if (USBCDC_sendDataInBackground(timeStr, 9, CDC0_INTFNUM, 1000)) 
{ 
_NOP(); // If it fails, it'll end up here. Could happen if 
// the cable was detached after the connectionState() 
}   // check, or if somehow the retries failed 

Et parfois, pendant les fenêtres de la session de débogage dire que mon appareil a été disconected.

Qu'est-ce que je fais de mal?

Je ne suis pas sûr que tous ces protocoles sont, ce qui est CDC ou HID et pourquoi devrais-je utiliser l'un sur l'autre. On dirait que la communication USB est très complexe ... Energia et Arduino la rendent si facile avec Begin.Serial (9600) mais je veux apprendre le "vrai" chemin avec IAR puisque je suis débutant une carrière dans les systèmes embarqués.

Devrais-je essayer de continuer et de faire fonctionner cela? ou y a-t-il du matériel que je dois comprendre avant de pouvoir faire fonctionner la communication USB? Je ne veux rien faire de trop élevé avec l'USB, je veux juste utiliser l'ADC12 pour lire un signal d'un capteur de force résistif, puis tirer sur l'ordinateur.

Pour voir tout le code im parler, vous pouvez télécharger Texas Instruments par exemple le dossier here [Attention: Link commence télécharger, voir la page où je suis venu d'aller here).

+0

HID est un périphérique d'interface humaine, un type de périphérique USB. Peut-être que l'exemple de projet met en œuvre un périphérique USB HID réel plutôt que l'interface de port série que vous attendez. – kkrambo

+0

Wikipedia a une belle introduction à l'USB et à ses sous-protocoles. En outre, les spécifications sont téléchargeables gratuitement. Si vous voulez jouer avec un MCU, vous devriez apprendre à le faire. Comme indiqué, je dirais que la question est trop large ou manque de plus d'informations et un problème spécifique. Et, non, nous n'allons pas charger des tonnes de boules de vendeur. Plase fournit un [mcve]. – Olaf

+0

@Olaf pour fournir un MCVE nécessiterait toutes les bibliothèques liées à l'exemple de programme. – Aaron

Répondre

0

USB est un ensemble de protocoles plutôt complexe.

Le protocole USB pour les ports COM est appelé CDC (classe d'équipement de communication) et non HID.Lorsque vous implémentez un port COM (virtuel) sur le F5529, il apparaît sous la forme d'un port troisième port sur le PC hôte.

Le F5529 possède deux UART «réels». Le premier va au connecteur BoosterPack. Le second est connecté au CPU eZ-FET, qui implémente une interface UART-USB; C'est l'application "UART". L'utilisation de l'application UART est plus simple car vous n'avez pas besoin d'implémenter un périphérique USB; vous utilisez juste le module USCI_A1 directement, et l'autre CPU s'occupe du matériel USB.

Lisez les sections 2.2.3 et 2.2.6 du guide de l'utilisateur de votre LaunchPad.

+0

merci pour la réponse! J'ai regardé dans le guide de l'utilisateur et j'ai une idée plus précise de ce que je dois faire, mais je trouve toujours qu'il y a un manque sérieux de tutoriels/guides pour les débutants pour apprendre la communication usb avec cet appareil. Le guide dit que vous devez créer votre propre instance d'un module USB pour une application avec laquelle communiquer mais sans dire comment, et les exemples fournis par TI ne semblent pas faire cela. – Aaron

+0

aussi ce qui est exactement HID pour alors, sinon pour la communication avec les ports COM? – Aaron

+0

Comme je l'ai dit, l'USB est complexe; Si vous n'utilisez pas les exemples CDC/HID/MSC, vous devez connaître tous ces protocoles USB et le matériel MSP430 pour pouvoir écrire votre propre implémentation. Les dispositifs d'interface humaine sont des choses comme les claviers et les souris. –