나는 최근에 클라이언트를 위해 PCB를 설계했다. 모든 것이 하드웨어와 소프트웨어에 문제가 없다 (애플리케이션은 예상대로 작동하고있다). 이제 우리는 마이크로 컨트롤러 내부에서 프로그램을 업데이트해야 할 필요성에 직면하고 있지만, 이러한 PCB는 전 세계 여러 곳에 설치되어 있기 때문에 부트 로더를 설치하고 애플리케이션에서 사용하는 것과 동일한 UART를 사용하는 것이 좋습니다.
보드 설명
- AT32UC3L032
- 보드와 PC 간의 통신에 이미 사용 된 UART 1 개
- 애플리케이션을위한 몇 가지 I / O
- 상태 LED 커플
관련 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
사용되는 도구
- 윈도우 XP
- 아트멜 스튜디오 6.1
- AVRONE 프로그래머
몇 시간 동안 검색 한 후 ASF 3.14.0.834에서 제공되는 Atmel Software Framework DFU를 발견했습니다. 그것은 유망 해 보였고 제공된 도구를 사용하여 보드에 설치할 수있었습니다.
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (ASF와 함께 제공되는 스크립트)
- 플립 3.4.7 (박자)
처음 에는 스크립트를 사용하여 설치 한 ASF를 사용 .bin
하고 .dat
제공했습니다. 이제 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.
UART에서 오실로스코프 RX 및 TX로 테스트했는데 데이터가 보드에 연결되지만 PC에 27kHz 구형파가 수신됩니다 (스톱 비트 또는 기타 요소가 없기 때문에 UART에서 데이터가 될 수 없음). 115200bps).
더 많은 연구를 마친 후에 이러한 값을 얻도록 구성 Word1
하고 Word2
파일 at32uc3l-uart-isp_cfg-1.0.1.dat
을 작성 했습니다.
- 워드 1 : 0xE11E0024
- 워드 2 : 0x494F81AA
PA01
ISP에 입력하는 옵션으로 핀을 사용 합니다.
또한 Atmel Studio 6.1에 DFU 소스를로드하고 동일한 직렬 포트 구성을 사용하지 않는 것을 알았으므로 내 응용 프로그램과 동일하게 변경되었습니다. 또한 DFU의 메인 내부에 일부 LED 토글이 추가되었습니다.
보드에서 부트 로더를 업데이트 한 후 LED가 변경되지 않고 동일한 시간 초과, 동일한 구형파가 발생합니다.
뭔가 빠졌습니까?