Ich habe kürzlich eine Leiterplatte für einen Kunden entworfen, alles ist in Ordnung mit der Hardware und Software (die Anwendung funktioniert so, wie sie soll). Jetzt müssen wir das Programm im Mikrocontroller aktualisieren. Da diese Leiterplatten jedoch an verschiedenen Orten auf der Welt installiert sind, ist es ideal, einen Bootloader zu installieren und denselben UART zu verwenden, der von der Anwendung verwendet wird.
Board-Beschreibung
- AT32UC3L032
- Ein UART wurde bereits für die Kommunikation zwischen Karte und PC verwendet
- Ein paar I / Os für die Anwendung
- Einige Status-LEDs
Relevante PINS und Konfig
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
Benutztes Werkzeug
- Windows XP
- Atmel Studio 6.1
- AVRONE-Programmierer
Nach vielen Stunden der Suche habe ich die in ASF 3.14.0.834 bereitgestellte DFU von Atmel Software Framework gefunden. Das sah vielversprechend aus, ich konnte es mit den mitgelieferten Tools auf meinem Board installieren:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (mitgeliefertes Skript mit ASF)
- Flip 3.4.7 (batchisp)
Zuerst habe ich ASF verwendet .bin
und .dat
bereitgestellt, das mithilfe des Skripts installiert wurde. Versuchen Sie nun, eine Anwendung mit dem Befehl batchisp hochzuladen:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Aber immer bekommen:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
Ich habe mit Oszilloskop RX und TX von UART getestet, die Daten gehen an Bord, aber der PC empfängt eine 27-kHz-Rechteckwelle (es können keine Daten von UART sein, da es kein Stoppbit oder ähnliches gibt, auch die Frequenz ist wahrscheinlich nicht dieselbe für 115200bps).
Nach weiteren Recherchen habe ich konfiguriert Word1
und Word2
in Datei at32uc3l-uart-isp_cfg-1.0.1.dat
, um diese Werte zu erhalten:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
PIN PA01
als Option zur Eingabe in den ISP verwenden.
Laden Sie auch die Quelle der DFU in Atmel Studio 6.1 und stellen Sie fest, dass sie nicht dieselbe Konfiguration für den seriellen Anschluss verwenden, und ändern Sie sie für dieselbe Anwendung. Es wurden auch einige LEDs hinzugefügt, die im Hauptbereich der DFU umschalten.
Nach dem Update des Bootloaders auf der Karte ändern sich keine LEDs, dieselbe Zeitüberschreitung, dieselbe Rechteckwelle.
Vermisse ich etwas?