J'ai récemment conçu un PCB pour un client, tout va bien avec le matériel et les logiciels (l'application fonctionne comme prévu). Nous sommes maintenant confrontés à la nécessité de mettre à jour le programme à l'intérieur du microcontrôleur, mais comme ces PCB sont installés à différents endroits du monde, il serait parfait d'installer un chargeur de démarrage et d'utiliser le même UART que celui utilisé par l'application.
Description du conseil
- AT32UC3L032
- Un UART déjà utilisé pour communiquer entre la carte et le PC
- Couple d'E / S pour l'application
- Deux LED d'état
PINS et config pertinents
PA01 # Used for entering ISP with high level
PA20 # Used for application and ISP UART
PA21 # Used for application and ISP UART
#define COM_USART (&AVR32_USART2)
#define COM_USART_RX_PIN AVR32_USART2_RXD_0_0_PIN
#define COM_USART_RX_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION
#define COM_USART_TX_PIN AVR32_USART2_TXD_0_0_PIN
#define COM_USART_TX_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION
#define COM_USART_IRQ AVR32_USART2_IRQ
#define COM_USART_BAUDRATE 115200
Les outils utilisés
- Windows XP
- Atmel Studio 6.1
- Programmeur AVRONE
Après plusieurs heures de recherche, j'ai trouvé la DFU Atmel Software Framework, fournie dans ASF 3.14.0.834. Cela semblait prometteur, j'ai pu l'installer sur ma carte à l'aide des outils fournis:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (script fourni avec ASF)
- Flip 3.4.7 (batchisp)
Au début, j'ai utilisé .bin
et .dat
fourni avec ASF, installé à l'aide du script. Maintenant, essayez de télécharger l'application en utilisant la commande batchisp:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Mais toujours:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
J'ai testé avec l'oscilloscope RX et TX de UART, les données vont embarquer mais le PC reçoit une onde carrée de 27 kHz (ne peut pas être des données de UART car il n'y a pas de bit d'arrêt ou quoi que ce soit, la fréquence n'est probablement pas la même pour 115200 bps).
Après plus de recherches, j'ai configuré Word1
et Word2
en fichier at32uc3l-uart-isp_cfg-1.0.1.dat
pour obtenir ces valeurs:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
Pour utiliser la broche PA01
comme option pour entrer dans le FAI.
En outre, a chargé la source de la DFU dans Atmel Studio 6.1 et a remarqué qu'ils n'utilisaient pas la même configuration de port série, donc changé pour la même chose que mon application. Ajout de quelques voyants à bascule à l'intérieur du principal de la DFU.
Après la mise à jour du chargeur de démarrage dans la carte, aucune LED ne change, même timeout, même onde carrée.
Suis-je en train de manquer quelque chose?