Saya telah merancang PCB untuk klien baru-baru ini, semuanya baik-baik saja dengan perangkat keras dan perangkat lunak (aplikasi berfungsi sebagaimana mestinya). Sekarang kita menghadapi kebutuhan untuk memperbarui program di dalam mikrokontroler, tetapi karena PCB ini dipasang di berbagai tempat di dunia, itu akan sempurna untuk menginstal bootloader dan menggunakan UART yang sama seperti yang digunakan oleh aplikasi.
Deskripsi dewan
- AT32UC3L032
- Satu UART sudah digunakan untuk berkomunikasi antara board dan PC
- Pasangan I / Os untuk aplikasi
- Beberapa LED negara
PIN dan konfigurasi yang relevan
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
Alat yang digunakan
- Windows XP
- Atmel Studio 6.1
- Programmer AVRONE
Setelah mencari selama berjam-jam, saya menemukan Atmel Software Framework DFU, yang disediakan di ASF 3.14.0.834. Itu tampak menjanjikan, saya bisa menginstalnya di papan saya menggunakan alat yang disediakan:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (disediakan skrip dengan ASF)
- Balik 3.4.7 (batch)
Pada awalnya, saya menggunakan .bin
dan .dat
menyediakan ASF, diinstal menggunakan skrip. Sekarang mencoba mengunggah aplikasi menggunakan perintah batchisp:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Tapi selalu mendapatkan:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
Saya sudah menguji dengan osiloskop RX dan TX dari UART, data akan naik tetapi PC menerima gelombang persegi 27kHz (tidak dapat data dari UART karena tidak ada halte atau apapun, frekuensi juga mungkin tidak sama untuk 115200bps).
Setelah penelitian lebih lanjut, saya telah mengkonfigurasi Word1
dan Word2
dalam file at32uc3l-uart-isp_cfg-1.0.1.dat
untuk mendapatkan nilai-nilai ini:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
Untuk menggunakan pin PA01
sebagai opsi untuk masuk ke ISP.
Selain itu, memuat sumber DFU di Atmel Studio 6.1 dan memperhatikan bahwa mereka tidak menggunakan konfigurasi port serial yang sama, jadi diubah sama seperti aplikasi saya. Juga menambahkan beberapa LED untuk beralih di dalam utama DFU.
Setelah memperbarui bootloader di board, tidak ada LED yang berubah, batas waktu yang sama, gelombang persegi yang sama.
Apakah saya melewatkan sesuatu?
sumber
Jawaban:
Mungkin coba gunakan programmer AVR dan Arduino IDE jika itu mungkin. Saya tahu ini bekerja dengan baik dengan mikrokontroler seri AT.
sumber
Menggunakan JTAG tanpa kode trampolin yang tepat akan menimpa BOOTLOADER yang dikirimkan oleh ATMEL. Jadi setelah pemrograman pertama dengan JTAG Anda kemungkinan besar menghapus BOOTLOADER untuk selamanya.
Sekring juga harus disetel agar bootloader dapat berfungsi yang biasanya diatur oleh pengaturan programer JTAG.
Untuk memperbaiki ini, Anda perlu memprogram BOOTLOADER kembali (diambil dari chip yang belum diprogram) ke dalam chip oleh JTAG dan mengatur sekeringnya dengan benar.
Saya berhenti menggunakan JTAG sejak dulu karena BOOTLOADER + FLIP jauh lebih nyaman dan lebih cepat. Pastikan Anda menggunakan hex bukan bin / elf dan kondisi BOOTLOADER masih benar setelah kondisi reset berakhir.
Ini adalah bagaimana saya menggunakan FLIP di RS232:
Di mana
avr32-objcopy
dari folder AVRStudio danBatchisp
dari FLIP. Anda hanya perlu mengubah nama file dan ID chip AVR dan COM agar sesuai dengan proyek Anda.Jika Anda membutuhkannya, Anda juga dapat menggunakan USB:
Trampolin harus diaktifkan di tautan (properti proyek) seperti inilah konfigurasi tambang:
Saya masih menggunakan AVR32 Studio 2.7.0 karena versi yang lebih baru adalah omong kosong sehingga konfigurasi mereka mungkin berbeda.
[Edit1] info tambahan
untuk UC3L0 yang
AVR32_PIN_PA20
beberapa RC generik jam (harus 32KHz tetapi bervariasi dari chip ke chip cukup banyak tanpa kalibrasi dengan prescalers) dari chip sampai tujuannya diubah ke GPIO atau apa pun sehingga ~ jam 27KHz tidak ada hubungannya dengan USART . Btw bahwa jam ini ditenagai oleh 3.3V dan menghasilkan bahkan jika inti 1.98V chip digoreng untuk kebaikan ....Kondisi Bootloader telah
AVR32_PIN_PA11
diatur ke nol sebelum Reset rilis (kecuali jika Anda menerapkan kondisi / perintah DFU Anda sendiri ke dalam firmware Anda) Jadi salah satu kemungkinan adalah membuat RC yang Anda hilangkan ke status RENDAH, dan reset sebelum mengisi ulang ... atau gunakan beberapa FLIP / FLOP gate atau jumper ...sumber