1.连桥的小礼物五十一 Arduino 进阶制作开发板“中”
2.基于ATmega 328p的ARDUINO UNO bootloader 烧写(ATmega32U4也有补充)
3.å¦ä½ç§å½ arduino ç bootloader
4.å¦ä½å©ç¨Arduinoä½ä¸ºAVR ISPç§å½bootloader
5.å¦ä½ç»Arduinoè¯çç§å
¥bootloader
连桥的小礼物五十一 Arduino 进阶制作开发板“中”
在开始CHC部分之前,需先对AU封装的ATMEGAP进行烧写bootloader。AU封装为贴片,作者购买了贴片转接板,并在反面焊接排针。本计划为AU芯片上传bootloader,网上练兵的源码但初次通电时成品nano板冒烟,疑似SL小元件损坏,实为B肖特基二极管故障。作者另有一成品nano板,但无法复现烧毁原因,推测可能与贴片焊接技术不佳或Pin的k神辅助源码ATMEGAP焊接难度高有关。决定暂不进行贴片操作,改为直插式ATMEGAP进行改造。
在冒烟事件后,作者断电并检查芯片与CHC温度,确认无损坏迹象。注意到新nano板上晶振接有负载电容。使用USB转串口模块上传程序时出现失败,提示信息显示可能与重启引线或电源系统问题有关。作者在CSDN上查阅相关经验后,发现重启按键开关操作并未解决问题,电源部分完善后,单排模块源码解析上传程序依然不成功。
问题排查至IDE显示开发板信息时,发现提示并无数字签名之类的问题。作者决定搭建独立的CHC电路,以自行接上DTR并完善电源部分,再次尝试上传程序。参考之前提到的电路图,对电路进行优化调整,如取消K电阻,测试并联1M欧电阻的效果,增加1N二极管于RESET引脚,圣元溯源码以及在DTR与CHC之间接入电容等操作。
在解决电源部分后,作者发现U盘连接引脚有所不同,因此需要进行相应的移植操作。CHC部分保持不变。电源系统采用AMS-5V集成电路,并通过数据手册了解其引脚功能。典型应用电路示例显示了去耦电容的作用,以过滤直流电中的交流信号。作者根据实际情况调整电路,包括增加防反接二极管、主图狙击源码去耦电容等组件,并实现LED指示灯与自恢复保险丝的连接。
在对电路进行调整后,IDE显示串口信息,作者尝试上传程序,但仍遭遇问题。通过查阅资料,作者了解到环回测试是用于检查CHC串口模块功能的一种方法。经过环回测试,问题得以解决,但上传程序仍存在困难。进一步分析发现可能与ATMEGAP电源稳定性或电压不足有关。
作者怀疑电源问题可能是导致程序上传失败的原因之一,考虑到程序写入时需要稳定的电压信号进行电平转换。在最初提到的最小系统电路中,已采取措施防止双电源输入,但在实际操作中并未解决电源问题。最后,作者决定将关注点转向硬件电路的梳理和寄存器知识的复习,同时也记录下电源选择电路的核心IC,以便未来参考。
更新定义为“中”,后续将根据时间和精力投入,解决当前遇到的问题,并考虑更新“下”篇,分享解决问题的过程和经验。
基于ATmega p的ARDUINO UNO bootloader 烧写(ATmegaU4也有补充)
如果你的新ATmegap芯片未预装bootloader,本文将指导你如何使用Arduino UNO R3进行烧写,同时提及了ATmegaU4的烧写补充。以下是操作步骤:
一、准备工作
你需要购买一个USB ASP烧写器(淘宝十几元),杜邦线6根,以及一个Arduino UNO R3开发板。
二、接线说明
确保USB ASP烧写器电源跳线接5V,并根据图示正确连接USBasp和UNO板。
三、驱动安装
插入USB ASP烧写器,使用zadig软件下载并安装驱动。在设备管理器中,确认USBasp已被识别。
四、熔丝设置
打开Arduino的boards.txt文件,查找Arduino Uno相关熔丝位,注意设置的低熔丝(0xFF)、高熔丝(0xDE)和扩展熔丝(0xFD)。
五、烧写过程
1. 使用progisp烧写:下载1.版本,设置好芯片和烧写器,输入熔丝位并烧写optiboot_atmega.hex文件。
2. 或者使用AVRDUDESS烧写:选择USBasp,设置熔丝配置并烧写Caterina-Leonardo.hex文件(ATmegaU4)。
六、验证
使用Arduino IDE,烧写示例代码验证bootloader是否成功,如LED灯闪烁。
补充说明:ATmegaU4烧写
ATmegaU4的烧写过程与ATmega类似,只需调整熔丝位和固件文件。具体步骤参考上述ATmega的描述。
烧写成功后,通过设备管理器确认设备并使用Arduino IDE或QMK tools进行编程。烧写QMK固件时,需短接reset引脚进入dfu模式。
å¦ä½ç§å½ arduino ç bootloader
为äºæ¢å¤Arduinoçåè½ï¼å¿ é¡»å¾éæ°ç»ATMegaPåçæºéç§åbootloaderï¼å ¶å®Arduinoå°±æ¯å¨AVRåçæºä¸é¢ç½®äºä¸ä¸ªbootloaderç¨åºï¼è¿æ ·åé åArduinoå¼åç¯å¢å°±æ¯æè°çArduinoäºï¼ä½Arduinoè¿ä¸ªè¯æ¬èº«åªçç»å®æ¹ä½¿ç¨ï¼ãå½ç¶å¨æ·å®ä¸ä¹è½ä¹°å°å·²ç»ç§å好çAVRåçæºï¼åªæ¯èªå·±æä¸å·²ç»æäºAVRåçæºï¼å°±æ²¡å¿ è¦å»è±é£å¤æé±äºã
äºæ¯é©¬ä¸æå¼ä¸è½çç¾åº¦ï¼è¾å ¥å ³é®åâArduino bootloaderâæç¶ï¼ä¸å¤§å ä¹±ä¸å «ç³ç¸å ³çé®é¢å°±åºæ¥äºï¼ç»è¿ä¸è½®ççéï¼åç°è®¸å¤è¯´çä¹å¹¶ä¸æ¯å¾æ¸ æ°ï¼ä¸è¿è®©ææç½äºä¸ªå¤§æ¦ï¼ä¸ä¸ªæ®éçAVRåçæºç¡®å®è½ç§åbootloaderä¹åä½ä¸ºArduino使ç¨ãé£ä¹é®é¢æ¥äºï¼å¦ä½æbootloaderç§å½å°AVRåçæºä¸å»äºï¼è¿çç¡®æ¯ä¸ªé®é¢ï¼åæ£å¯¹äºä¸æAVRå¼åçææ¥è¯´æ¯ä¸ªé®é¢ãä¸è¿è¿å¥½ä¹åå¨æ·å®ä¸ä¹°äºä¸ä¸ªUSBASPä¸è½½å¨ï¼è·ä¹åæ¦é¤bootloaderä¸æ ·ï¼ä¹è¦ç¨å°progisp软件ï¼å 为æ¤æ¶çATMegaPåªæ¯ä¸ä¸ªæ®éçAVRåçæºï¼ç¨Arduinoå¼å软件æ¯ç§åä¸è¿å»çï¼ã
æ¢ç¶è¦ç§å½bootloaderï¼é£ä¹ä»ä¹æ¯bootloaderå¢ï¼æ£å¦ä½ ææ³ï¼bootloaderå½ç¶æ¯ä¸ä¸ªç¨åºï¼æ¢ç¶è¦ç§å½å°åçæºä¸å»ï¼åºè¯¥æ¯ä¸ä¸ª.HEXä¹ç±»çæ件ãä½æ¯ï¼bootloaderæ件ä»åªæ¥å¢ï¼ç»§ç»ç¾åº¦ãããæ¾å°äºï¼å¨Arduino软件å®è£ ç®å½ä¸çhardware\arduinoä¸ãæ¤æ件夹ä¸çâboards.txtâæ件å¾éè¦ï¼æ¯å¾éè¦ï¼å ¶ä»çæ许é½å¯ä»¥å¨ç¾åº¦ä¸æ¾å°ï¼ä½å 为è¿ä¸ªæ件æè ¾äºæ大å个æä¸ï¼ç¾åº¦ä¸ä¹æ²¡ææç¡®ç说æãæå¼æ件ï¼æ¾å°èªå·±å¯¹åºçArduinoçæ¬ï¼å 为æçæ¯âArduino Unoâï¼äºæ¯éå®âuno.name=Arduino Unoâåºåç说æï¼å 为çä¸å»å¾ä¹±ï¼ä¸å®è¦ä»ç»å»çãæ¾å°âuno.bootloader.low_fuses=0xff"æç¼ç¨çä¸ä½ä½ä¸ºFFï¼âuno.bootloader.high_fuses=0xdeâæç¼ç¨çä¸é«ä½ä¸ºDEï¼âuno.bootloader.extended_fuses=0xâææ©å±ä½ä¸ºãè¿ä¸ä¸ªå¼é常éè¦ï¼æ¯å³å®ä½ ç§å½bootloaderæåçå ³é®ãè³äºè¿ä¸ä¸ªå¼å ·ä½æ¯ä»ä¹ææï¼æä¹ä¸æ¯å¾ä¸æ¸ æ¥ï¼ä½AVRåçæºçç§å½æ¶éè¦è®¾ç½®çä¸ä½ï¼èä¸ä¸è½ä¹±è®¾ç½®ï¼è¿ä¹æ¯AVRè·åçæºçä¸åä¹å¤ã
ç¨progisp软件æè¿ä¸ä¸ªçä¸ä½çå¼åå ¥å°AVRåçæºä¸ï¼ç¶å继ç»æµè§âboards.txtâæ件å¾ä¸çï¼æ¾å°âuno.bootloader.path=optibootâè¿å°±æ¯è¯´è¦ç§å½çbootloaderæ件å¨bootloaders\optionæ件夹ä¸ï¼âuno.bootloader.file=optiboot_atmega.hexâæ件åå°±æ¯optiboot_atmega.hexï¼è¿å°±æ¯æ¥ä¸æ¥éè¦ç§å½å°AVRåçæºä¸çç¨åºãç¨progisp软件è°å ¥æ¤æ件ï¼ç¶åç´æ¥åå ¥å°AVRåçæºä¸å°±è¡äºï¼ä¸ä¸ªæ¯æArduinoçAVRå°±å好äºããã
å ¶å®è¿ä¸ªé®é¢æ¬èº«ä¸é¾ï¼ä½å¯¹äºæ²¡æ¥è§¦è¿AVRç人æ¥è¯´ï¼è¿æ¯è¦è±è®¸å¤æ¶é´çï¼ä¸é´ä¹ä¼åå¨è®¸è®¸å¤å¤åç§åæ ·çé®é¢ãè³äºprogispç使ç¨æ¹æ³å¾ç®åï¼ç¾åº¦ä¸çæç¨ä¹å¾å¤ï¼è¿ææä¸å¿ é¡»æä¸åå¯ä»¥ç§å½AVRåçæºçä¸è½½å¨ãæå½æ¶å°±æ¯å¿½ç¥äºé£ä¸ä¸ªçä¸ä½çå¼ï¼æ以ååå¤å¤ä¹æ²¡ææåï¼ç¾åº¦ä¸é¢ä¹æ²¡æ对âboards.txtâæ件å详ç»ç解éã没设置çä¸ä½ç¨åºæ¯å¯ä»¥æ£å¸¸çç§å½è¿å»ï¼ä½Arduinoæ¯ä¸è½ç¨çï¼æä»¥å¿ é¡»è¦æç §å®ç½ç»åºç说ææä½ãæå½æ¶å¤§å¤æ°æ¶é´ä¸»è¦è±å¨ä¸¤ä¸ªé®é¢ä¸ï¼ä¸ä¸ªæ¯.HEXæä»¶å ·ä½ä½ç½®ï¼å 为Arduinoæä¸åççæ¬ï¼æ以.HEXæ件ä¹ä¸åï¼è¿æä¸ä¸ªå°±æ¯çä¸ä½ä¸ã
å¦ä½å©ç¨Arduinoä½ä¸ºAVR ISPç§å½bootloader
ä¸ãé¦å å®è£ AVRISP mkâ ¡ç驱å¨ç¨åº
äºãè¿å ¥AVRstudio
éæ©toolsä¸ç device programming
éæ©AVRISP mkâ ¡ Deviceéæ©å¯¹åºæ¿åçè¯çï¼æè¿æ¯unoéæ©Atmegap
åå»Apply
åºç°ä»¥ä¸ç»é¢
åå»read
åºç°ä»¥ä¸ç»é¢ï¼æ¾ç¤ºåºå½åç³»ç»çµåå设å¤æ 示å·
ä¸ãç§å½bootloader
éå®Memories
éæ©éè¦ç§å¦çæ件ã
ç¨ååæ¿çæå¼ææ¡£å¦ä¸å¾ï¼å¯ä»¥çè§æ¯å¦bootloaderæ件åçä¸ä½çä¿¡æ¯
æ ¹æ®ä¸å¾ç§å½çä¸ä½åbootloader
å¦ä½ç»Arduinoè¯çç§å ¥bootloader
è¿éæ两ç§ç§åbootloaderçæ¹å¼1ï¼ ç¨ä¸åarduinoæ¿ç»å¦ä¸åç§bootloaderï¼
ç´æ¥ä¸æ¥çº¿å¾ï¼
å ¶æ¥çº¿æ¹å¼å°±æ¯ï¼
Programmer Being programmed
Vcc ------> Vcc
GND ------> GND
Pin ------> pin 1 (RESET)
Pin ------> pin (MOSI)
Pin ------> pin (MISO)
Pin ------> pin (SCK)
æ¥å¥½çº¿ä¹åå°ä½ä¸ºProgrammerçé£åæ¿è¿æ¥çµèï¼ç¶åæå¼ArduinoçIDEï¼ä¸è¬ç¨1.0以ä¸ççæ¬å°±å¯ä»¥äºï¼ï¼
(1). æå¼Arduinoç示ä¾æ件ArduinoISPå°å ¶ä¸ä¼ å°ä½ä¸ºProgrammerçé£åæ¿ï¼åè®¾ä½ å·²ç»ç¥éæä¹ä¸ä¼ äºï¼ï¼
(2). ä¸ä¼ å®æ¯åï¼éæ©å·¥å · --> ç¨åºå--> Arduino as ISPï¼å 为ç¨çæ¯ä¸æçï¼ç¨åºåé项就æ¯å·¥å ·æ ä¸åæ°ç¬¬äºä¸ªï¼æåç¹å»å·¥å ·æ ä¸æåä¸ä¸ªé项âç§å½å¼å¯¼ç¨åºâï¼ç¶åçå¾ ç§å½å®æ就好äºï¼å¦æ顺å©çè¯ã
2. ç´æ¥ç¨ä¸ä¸ªä¸²å£éé å¨æ¥ç§ï¼
è¿ä¸ªæ¹æ³æ¯Aduinoå®ç½ä¸æä¾çï¼æ¥çº¿å°±åè¿æ ·ï¼
é£ä¸ªä¸²å£éé å¨çæ¥å£å°±æ¯è¿æ ·ï¼
è¿æ¥å¥½çº¿è·¯ï¼ä¹åçæä½æ¹æ³ä¸æ¹æ³ä¸æç¹ç±»ä¼¼ï¼ä¸è¿è¿éä¸ç¨è¿éä¸ç¨ä¸ä¼ ArduinoISPç¨åºï¼ç´æ¥éæ©å¥½è¦ç§å½çæ¿åè¯ççç±»åï¼å¨å·¥å ·æ éçç¨åºå项ä¸
éæ©USBaspé项ï¼ä¹åç¹å»ç§å½å¼å¯¼ç¨åºé项ï¼çå¾ ç§å½å®æ¯ã
å¯è½åºç°çé®é¢å解å³æ¹æ³ï¼
è¦æ¯åºç°ç§å½ä¸æåçæ åµçè¯ï¼å æ£æ¥ä¸ä¸æ¯ä¸æ¯æ¿ä»ä¹ééäºï¼è¦æ¯è§å¾æ¿æ²¡éï¼å°±ççä½ çè¯çï¼åå¦ä½ å¨IDEä¸éæ©çè¯çATmegaï¼è¦æ¯ä½ å®é 使ç¨ç
è¯çæ¯ATmega-PUï¼é£ä¹ä½ å¯ä»¥è¿ä¹åï¼
è¿å ¥Arduino IDEçå®è£ æ件å¤ä»½å ¶ä¸çavrdude.confæ件ï¼
ç¨è®°äºæ¬æå¼avrdude.confæ件ï¼
æ¾å°å ¶ä¸çâ0x1e 0x 0x0Fâè¿ä¸è¡ï¼å°å ¶æ¿æ¢ä¸ºâ0x1e 0x 0xâ;
ä¿åæ´æ¹ï¼éå¯IDEï¼åç§ä¸æ¬¡ã