Niedawno zaprojektowałem płytkę drukowaną dla klienta, wszystko jest w porządku ze sprzętem i oprogramowaniem (aplikacja działa tak, jak powinna). Teraz stajemy przed koniecznością aktualizacji programu wewnątrz mikrokontrolera, ale ponieważ te płytki drukowane są instalowane w różnych miejscach na całym świecie, idealnie byłoby zainstalować program ładujący i używać tego samego UART, którego używa aplikacja.
Opis tablicy
- AT32UC3L032
- Jeden UART już służy do komunikacji między kartą a komputerem
- Kilka I / O dla aplikacji
- Kilka diod LED stanu
Odpowiednie kody PIN i konfiguracja
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
Narzędzia użyte
- Windows XP
- Atmel Studio 6.1
- Programator AVRONE
Po wielu godzinach poszukiwań znalazłem DFU Software Framework Atmel, udostępniony w ASF 3.14.0.834. Wyglądało to obiecująco, udało mi się zainstalować go na mojej płycie za pomocą dostarczonych narzędzi:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (dostarczony skrypt z ASF)
- Odwróć 3.4.7 (batchisp)
Na początku użyłem .bin
i .dat
wyposażony ASF, zainstalowany przy użyciu skryptu. Teraz próbuję załadować aplikację za pomocą polecenia batchisp:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Ale zawsze dostaje:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
Testowałem z oscyloskopem RX i TX z UART, dane idą na płytkę, ale komputer odbiera falę prostokątną 27 kHz (nie może to być dane z UART, ponieważ nie ma bitu stop ani nic, również częstotliwość prawdopodobnie nie jest taka sama dla 115200bps).
Po dalszych badaniach skonfigurowałem Word1
i Word2
w pliku, at32uc3l-uart-isp_cfg-1.0.1.dat
aby uzyskać te wartości:
- Słowo 1: 0xE11E0024
- Word2: 0x494F81AA
Aby użyć numeru PIN PA01
jako opcji, aby wprowadzić w ISP.
Ponadto załadowałem źródło DFU do Atmel Studio 6.1 i zauważyłem, że nie używają tej samej konfiguracji portu szeregowego, więc zmieniono na tę samą co moja aplikacja. Dodano także niektóre diody LED przełączające się w głównej części DFU.
Po aktualizacji bootloadera na płycie, diody LED się nie zmieniają, ten sam limit czasu, ta sama fala prostokątna.
Czy coś brakuje?