Нещодавно я розробив друковану плату для клієнта, з обладнанням та програмним забезпеченням все нормально (додаток працює як належить). Зараз ми стикаємося з необхідністю оновити програму всередині мікроконтролера, але оскільки ці друковані плати встановлені в різних місцях світу, було б ідеально встановити завантажувач і використовувати той самий UART, як і додаток.
Опис дошки
- AT32UC3L032
- Один UART вже використовувався для спілкування між платою та ПК
- Пара вводу-виводу для програми
- Пара державних світлодіодів
Відповідні PIN-коди та конфігурація
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
Використовувані інструменти
- Windows XP
- Atmel Studio 6.1
- Програміст AVRONE
Після багатогодинного пошуку я знайшов програму Atmel Software Framework DFU, надану в ASF 3.14.0.834. Це виглядало багатообіцяюче, я зміг встановити його на своїй дошці за допомогою наданих інструментів:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (надається сценарій з ASF)
- Відображення 3.4.7 (патчісп)
Спочатку я використовував .bin
і .dat
постачав ASF, встановлений за допомогою скрипту. Зараз намагаємося завантажити додаток за допомогою команди batchisp:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Але завжди отримуємо:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
Я тестував осцилоскоп RX і TX від UART, дані збираються на борт, але ПК отримує квадратну хвилю 27 кГц (неможливо бути даними від UART, оскільки немає стоп-біту чи нічого, також частота, ймовірно, не однакова для 115200bps).
Після додаткових досліджень, я налаштував Word1
і Word2
в файлі , at32uc3l-uart-isp_cfg-1.0.1.dat
щоб отримати ці значення:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
Використовувати штифт PA01
як опцію для входу в Інтернет-провайдера.
Також завантажили джерело DFU в Atmel Studio 6.1 і помітили, що вони не використовують ту саму конфігурацію послідовного порту, тому змінено на те саме, що і моя програма. Також додано кілька світлодіодів, що перемикаються всередині основної частини DFU.
Після оновлення завантажувача на платі не змінюються світлодіоди, той самий час очікування, однакова квадратна хвиля.
Я щось пропускаю?