我最近为客户设计了一个PCB,硬件和软件(应用程序按预期的方式运行)一切正常。现在,我们面临着更新微控制器内部程序的需求,但是由于这些PCB安装在世界各地,因此安装引导加载程序并使用与应用程序相同的UART将是完美的选择。
董事会说明
- AT32UC3L032
- 一个UART已经用于板与PC之间的通信
- 应用程序的几个I / O
- 几个状态LED
相关的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程序员
经过数小时的搜索,我找到了ASF 3.14.0.834中提供的Atmel软件框架DFU。看起来很有希望,我可以使用提供的工具将其安装在板上:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd(ASF提供的脚本)
- 翻转3.4.7(batchisp)
首先,我使用了ASF .bin
并.dat
随ASF提供了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.
我已经用UART的示波器RX和TX进行了测试,数据将被接收,但是PC正在接收27kHz方波(由于没有停止位或其他任何东西,所以无法从UART接收数据,频率可能也不相同)。 115200bps)。
经过更多研究,我已经配置Word1
并Word2
在文件at32uc3l-uart-isp_cfg-1.0.1.dat
中获取以下值:
- 字1:0xE11E0024
- 字2:0x494F81AA
使用pin PA01
作为选项输入ISP。
另外,在Atmel Studio 6.1中加载了DFU的源,并注意到它们没有使用相同的串行端口配置,因此对它的更改与我的应用程序相同。还在DFU的主体内添加了一些LED开关。
更新主板中的引导加载程序后,没有LED发生变化,相同的超时时间,相同的方波。
我想念什么吗?