ฉันเพิ่งออกแบบ PCB สำหรับลูกค้าเมื่อเร็ว ๆ นี้ทุกอย่างใช้ได้ดีกับฮาร์ดแวร์และซอฟต์แวร์ ตอนนี้เรากำลังเผชิญหน้ากับความจำเป็นในการอัพเดทโปรแกรมภายในไมโครคอนโทรลเลอร์ แต่เนื่องจาก PCB เหล่านี้ติดตั้งในสถานที่ต่าง ๆ ทั่วโลกจึงเป็นการดีที่จะติดตั้ง bootloader และใช้ UART เดียวกันกับที่ใช้งานโดยแอปพลิเคชัน
คำอธิบายคณะกรรมการ
- AT32UC3L032
- UART หนึ่งอันใช้ในการสื่อสารระหว่างบอร์ดกับพีซี
- คู่ของ I / Os สำหรับแอปพลิเคชัน
- ไฟสถานะคู่
PINS และการกำหนดค่าที่เกี่ยวข้อง
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 (batchisp)
ตอนแรกฉันใช้.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.
ฉันทดสอบกับ oscilloscope RX และ TX จาก UART แล้วข้อมูลกำลังจะขึ้นบอร์ด แต่พีซีได้รับคลื่นสี่เหลี่ยม 27kHz (ไม่สามารถเป็นข้อมูลจาก UART ได้เนื่องจากไม่มีบิตหยุดหรืออะไรก็ตามความถี่อาจไม่เหมือนกันสำหรับ 115200bps)
หลังจากการวิจัยเพิ่มเติมฉันได้กำหนดค่าWord1
และWord2
ในไฟล์at32uc3l-uart-isp_cfg-1.0.1.dat
เพื่อรับค่าเหล่านี้:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
หากต้องการใช้พินPA01
เป็นตัวเลือกเพื่อป้อนใน ISP
อีกทั้งโหลดแหล่งที่มาของ DFU ใน Atmel Studio 6.1 และสังเกตว่าพวกเขาไม่ได้ใช้การกำหนดค่าพอร์ตอนุกรมเดียวกันดังนั้นจึงเปลี่ยนสำหรับแอปพลิเคชันของฉัน นอกจากนี้ยังเพิ่มการสลับ LED บางส่วนภายในหลักของ DFU
หลังจากอัปเดต bootloader ในบอร์ดไม่มีการเปลี่ยนแปลงไฟ LED หมดเวลาเดียวกันคลื่นสี่เหลี่ยมเดียวกัน
ฉันพลาดอะไรไปรึเปล่า?