|
论坛似乎没看到有人研究CAN Bootloaer,AVR在国内也没有CAN的技术支持,只好自己发狠了。好在小有成果,AT90CAN128已经可以使用了。
单片机的CAN Bootloaer代码请参考Atmel官网发布的GCC版的CAN_Libraries_and_Examples,我将在附件中给出。AVR这几天改版了,竟然把它弄没了,只有IAR版的。GCC版的CAN_Libraries_and_Examples基本不需要修改,可以直接使用,只要把其中的IO口修改到和你的PCB一致、把晶震定义修改就可以了。
上位机使用Atmel官网发布的FLIP3.4.2,下载地址:http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3886
我使用的数据线是SYS TEC的USB转CAN,感觉挺好用。问题是这个东西很贵,我在考虑使用普通的串口转CAN的数据线,这就需要自己写上位机软件了,可这是我的弱项,只好慢慢啃了。打算用VB,VC太费时间。
下面是我侦测出来的FLIP3.4.2和CAN Bootloaer之间的通讯协议,更新中……
同时请参考GCC_CAN_bootloader-rev-1.1.0.pdf的说明
一、上位机与bootloader连接:
Request--PC发送,Answer--bootloader回复
其中53 54是帧头,无实际含义,2、3字节代表CAN的ID(高位在前),4字节代表CAN的帧类型--00数据帧,5字节是CAN的数据长度,6字节开始是CAN的数据(不一定满8个字节)
53 54 00 00 00 01 FF Request: 0x0000((“CRIS”<<4)+0)--ID_SELECT_NODE, len--1, FF--Node, Open or close communication
53 54 00 00 00 02 04 00 Answer: 0x0000((“CRIS”<<4)+0)--ID_SELECT_NODE, len--2, 04--Boot loader Version, 00--Communication closed
53 54 00 00 00 01 FF Request: 0x0000((“CRIS”<<4)+0)--ID_SELECT_NODE, len--1, FF--Node, Open or close communication
53 54 00 00 00 02 04 01 Answer: 0x0000((“CRIS”<<4)+0)--ID_SELECT_NODE, len--2, 04--Boot loader Version, 01--Communication opened
如果bootloader回复01--Communication opened,PC将连续读取单片机以下数据:
先选择目标:53 54 06 00 00 03 01 02 00 Request: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--3, 01--Select Memory space, Memory space02--Signature, Page00
回复OK: 53 54 06 00 00 01 00 Answer: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--1, 00--Selection OK
再操作地址:53 54 03 00 00 05 00 00 00 00 00 Request: 0x0003((“CRIS”<<4)+3)--ID_DISPLAY_DATA, len--5, 00--Display(read)data, 0x0000--Start Address, 0x0000--End Address
回复数据: 53 54 03 00 00 01 1E Answer: 0x0003((“CRIS”<<4)+3)--ID_DISPLAY_DATA, len--n=1, Data Read---MANUF_ID---0x1E---ATMEL
先选择目标:53 54 06 00 00 03 01 02 00 Request: 02--Signature, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 01 00 01 Request: --Display(read)data, Address:0x0001
回复数据: 53 54 03 00 00 01 81 Answer: FAMILY_CODE---0x81---AT90CANxxx family
先选择目标:53 54 06 00 00 03 01 02 00 Request: 02--Signature, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 02 00 02 Request: --Display(read)data, Address:0x0002
回复数据: 53 54 03 00 00 01 97 Answer: PRODUCT_NAME---0x97---128 Kbytes of Flash
先选择目标:53 54 06 00 00 03 01 02 00 Request: 02--Signature, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 03 00 03 Request: --Display(read)data, Address:0x0003
回复数据: 53 54 03 00 00 01 00 Answer: PRODUCT_REV---0x00---Rev 0
先选择目标:53 54 06 00 00 03 01 03 00 Request: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--3, 01--Select Memory space, Memory space03--Boot Loader Information, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 00 00 00 Request: --Display(read)data, Address:0x0000
回复数据: 53 54 03 00 00 01 04 Answer: Boot loader Version 04
先选择目标:53 54 06 00 00 03 01 05 00 Request: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--3, 01--Select Memory space, Memory space05--Device registers, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 E2 00 E2 Request: --Display(read)data, Address:0x00E2--CANBT1
回复数据: 53 54 03 00 00 01 08 Answer: CANBT1 = 0x08
先选择目标:53 54 06 00 00 03 01 05 00 Request: 05--Device registers, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 E3 00 E3 Request: --Display(read)data, Address:0x00E3--CANBT2
回复数据: 53 54 03 00 00 01 0C Answer: CANBT2 = 0x0C
先选择目标:53 54 06 00 00 03 01 05 00 Request: 05--Device registers, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 E4 00 E4 Request: --Display(read)data, Address:0x00E4--CANBT3
回复数据: 53 54 03 00 00 01 37 Answer: CANBT3 = 0x37
先选择目标:53 54 06 00 00 03 01 04 00 Request: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--3, 01--Select Memory space, Memory space04--Boot Loader Configuration, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 00 00 00 Request: 0x0003((“CRIS”<<4)+3)--ID_DISPLAY_DATA, len--5, 00--Display(read)data, 0x0000--Start Address, 0x0000--End Address--BSB_DEFAULT in boot_conf[0]
回复数据: 53 54 03 00 00 01 FF Answer: BSB = 0xFF
先选择目标:53 54 06 00 00 03 01 04 00 Request: 04--Boot Loader Configuration, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 02 00 02 Request: --Display(read)data, Address:0x0002--EB_DEFAULT in boot_conf[2]
回复数据: 53 54 03 00 00 01 FF Answer: EB = 0xFF
先选择目标:53 54 06 00 00 03 01 04 00 Request: 04--Boot Loader Configuration, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 01 00 01 Request: --Display(read)data, Address:0x0001--SSB_DEFAULT in boot_conf[1]
回复数据: 53 54 03 00 00 01 FF Answer: SSB = 0xFF
先选择目标:53 54 06 00 00 03 01 04 00 Request: 04--Boot Loader Configuration, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 08 00 08 Request: --Display(read)data, Address:0x0008--SA_H_DEFAULT(Start Application Word Address H) in boot_conf[8]
回复数据: 53 54 03 00 00 01 00 Answer: SA_H = 0x00
先选择目标:53 54 06 00 00 03 01 04 00 Request: 04--Boot Loader Configuration, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
再操作地址:53 54 03 00 00 05 00 00 09 00 09 Request: --Display(read)data, Address:0x0009--SA_L_DEFAULT(Start Application Word Address L) in boot_conf[9]
回复数据: 53 54 03 00 00 01 00 Answer: SA_L = 0x00
先选择目标:53 54 06 00 00 03 01 00 00 Request: 0x0006((“CRIS”<<4)+6)--ID_SELECT_MEM_PAGE, len--3, 01--Select Memory space, Memory space00--Flash Memory, Page00
回复OK: 53 54 06 00 00 01 00 Answer: --Selection OK
准备Flash Memory操作
说明文档ourdev_614828XDS64J.pdf(文件大小:668K) (原文件名:GCC_CAN_bootloader-rev-1.1.0.pdf)
单片机bootloader代码ourdev_614829OOJ23B.zip(文件大小:7.40M) (原文件名:AT90CAN3264128 Software Library-can_bootloader-2007.zip) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|