公司动态

慧净电子HL-1/HL-2小车ATmega16A-PU裸机+寄存器AVR-GCC开源工具链学习(第二坑)

📅 2026/7/16 4:27:45
慧净电子HL-1/HL-2小车ATmega16A-PU裸机+寄存器AVR-GCC开源工具链学习(第二坑)
ATmega16A 从 ICCAVR 迁移到 AVR-GCC关于熔丝位学习记录前言本文档为个人学习记录整理以慧净电子 HL-1 HL-2 开发板为硬件基础的个人学习实操记录如果对你恰好有用那么倍感荣幸。本文目标: ATmega16A熔丝位学习适用读者: 嵌入式新手, 单片机入门玩家.1. 前言我为什么学习 ATmega16A 开发板为什么学习慧净电子HL-1 HL-2 开发板这块板子它能解决什么问题适用于什么方向应用环境下的所属领域在哪我要拿这块板子做什么项目实现什么功能这是我每次在写文章时所思考的问题。下面就是我在学习时的个人记录所得。我为什么学习慧净电子HL-1 HL-2 开发板首先说实话这套板子应该是 2009 年的“老古董”了如果你看过我这个系列的首篇文章的话会发现刚开始我对这个板子几乎没有学习兴趣我的初始目标就是买个小车底盘搭载我的激光雷达买开发板纯属意外我也没想到30块钱能买到一辆完好无损的小车配件 开发板 下载器 配套的两块4.7V锂电池后续算上配置的电池充电器一共才花了我40.9在上海还不到两份午餐钱。不过既然到手了那肯定是要动起来的开箱它的时候发现这个小车是25年生产的主控芯片ATmega16A是24年生产的然后这个小车它的应用背景是大学生竞赛这芯片在这个AI大爆发的时代下居然还能参加竞赛❓️后来查了才知道是面向高职院校的基础赛道我学习它主要有两个目的1.去了解单片机底层原理。2.学习裸机寄存器开发。上述两条不追求“精通”但还是要有一定理解而且我觉得嵌入式开发越是深入底层个人核心能力才会得到增长。接下来就是我的个人学习所得了下面接着把我的狗头保命图給贴上。这是我在ATmega16A芯片挖的第二坑如果有需要希望能对你有所帮助。2. 慧净电子 HL-1 HL-2 开发板介绍2.1 基本概况本章为开发板背景介绍熟悉 HL-1/HL-2 的朋友可以直接跳到第三章。HL-1、HL-2 均为慧净电子推出的入门教学型单片机开发平台HL-2 AVR 版本原理图定稿于 2012 年 04 月 23 日HL-1 智能小车底盘同步同期推出主打高校实训、零基础单片机自学、智能小车机器人项目开发。HL-1基础款 51 单片机学习板配套专用智能小车底盘主控标配 STC89C52RC定位纯新手入门仅覆盖基础 IO、简单外设、循迹避障小车项目HL-2AVR 版跨内核增强开发板你手中型号搭载ATmega16A 单片机兼容 51/AVR 双模式外设数量、通信接口、调试接口全面升级既可以独立做 AVR 寄存器深度学习也能搭配 HL-1 小车底盘完成机器人综合项目二者配套完整视频教程、实验源码价格低廉广泛用于中职、大专单片机实训课堂兼顾理论实验与机器人实物开发我说怎么从来没听说过这款芯片。2.2 核心硬件参数HL-1: STC89C52RC (8051 内核, 11.0592MHz 晶振, 8K Flash, 512Byte RAM), 仅支持 51 内核;HL-2 (AVR 版, 本机配置): ATmega16, 增强型 AVR RISC 8 位单片机, 16K 系统 Flash, 512 字节 EEPROM, 1K 内部 SRAM, 板载 12MHz 标准晶振; 支持 5V 标准工作电压, 全部 PA/PB/PC/PD IO 引脚完整引出, 支持 ADC 模数采集, 硬件定时器, 外部中断;供电: 主板 USB 5V 供电; 搭配 HL-1 小车底盘时, 电机模块外接 7~12V 直流电源;下载调试: HL-2 搭载标准 ISP 下载接口, JTAG 仿真接口, 慧净专利防接反设计, 支持在线调试熔丝位.2.3. 板载外设接口HL-2ATmega16 主板板载模块显示模块LCD1602 字符液晶、LCD12864 点阵液晶慧净专利电路、4 位共阴数码管、8 路 LED 流水灯输入交互4 路独立按键、2×4 矩阵键盘、PS/2 标准键盘接口存储外设DS1302 实时时钟配套 32.768K 晶振 后备电池、AT24C02 I2C EEPROM传感与发声1838 红外接收头、9013 三极管驱动有源蜂鸣器、DS18B20 单总线温度传感器通信接口MAX232 串口电平转换模块两路 TTL 串口收发通道拓展接口20Pin 通用扩展座、JTAG 调试口、ISP 下载口、ADC 模拟输入通道电源单元USB 供电电路、电源总开关、电源指示灯、硬件复位电路。HL-1 小车底盘配套外设驱动单元L293D 直流电机驱动, 两路直流电机控制;传感模块: 4 路红外循迹传感器 (LM324 电压比较器处理), HC-SR04 超声波测距接口, 蓝牙串口拓展座;电源: 大容量滤波电容, 独立电源开关, 可外接锂电池组供电.2.4. 软件生态原生操作系统无嵌入式操作系统裸机 C 语言编程可自行移植简易 RTOS (FreeRTOS);开发方式HL-1: Keil C51, C 语言 / 汇编开发, 串口烧录;HL-2 (ATmega16): ICC AVR, AVR Studio, Atmel Studio, (Vs code 我的开发配置) 支持 ISP/JTAG 在线仿真调试;启动方式优先级: 上电复位 手动按键复位 JTAG 仿真复位;衍生版本HL-1 标准版51 单片机主板、HL-1 智能小车底盘HL-2 AVRATmega16、HJ-2G 升级版 AVR 开发板三合一拓展套件HL-1 51 主板 HL-2 AVR 主板 智能小车底盘2.5. 优缺点总结优点入门成本低一套硬件同时覆盖 51、AVR 两大主流 8 位单片机不用分开购买两套开发板HL-2 搭载 ATmega16 硬件资源完整自带 ADC、SPI、I2C、硬件中断适合深入学习 AVR 底层寄存器原理硬件一体化集成常用外设无需额外单独购买 LCD、时钟、存储、传感器模块接线简单配套完整源码、视频教程、实验手册零基础可直接上手适配院校实训教学硬件兼容性强HL-2 主板可直接对接 HL-1 小车底盘快速完成循迹、避障、遥控机器人综合项目ISP/JTAG 双调试接口支持在线仿真方便排错适合课程实验与课程设计原理图、资料开源方便学生二次修改硬件、拓展外设。缺点硬件发布时间较早2012 年定型主控 ATmega16A 存储容量偏小不适合复杂大型项目开发仅支持裸机开发无原厂配套 RTOS、物联网协议栈做 WiFi / 蓝牙物联网需额外外接模块L293D 电机驱动输出电流有限只能驱动小型减速电机无法驱动大功率直流电机板载外设均为基础教学器件缺少彩屏、CAN、以太网等工业级拓展接口3. 关于ATmega16A熔丝位的学习记录本文重点3.1. 什么是熔丝位核心概念熔丝位是单片机内部的一组硬件配置开关决定了芯片的“启动方式”。比喻熔丝位就像汽车的“点火开关配置”——决定发动机用汽油还是柴油、车轮锁死还是释放。3.2. 与普通代码的区别代码熔丝位软件配置程序烧录后生效硬件配置上电瞬间决定芯片行为每次烧录都会覆盖烧录后持续生效除非重新修改改错不会变砖改错可能导致“锁死变砖”3.3. 0 和 1 的反直觉含义重点在熔丝位里0 和 1 的开关逻辑和我们平时写代码的习惯是反着的:值含义比喻0已编程 (熔丝熔断)功能开启 / 生效1未编程 (熔丝完好)功能关闭 / 禁止“0 是开启, 1 是关闭”–和普通开关相反, 需要刻意记住!3.4. 熔丝位的三大核心作用作用说明常用场景① 选择时钟源 (CKSEL)决定芯片用外部晶振还是内部 RC有晶振选外部, 无晶振选内部② 关闭 JTAG (JTAGEN)释放 PC2-PC5 引脚给普通 IO 使用小车电机必须关 JTAG!③ 开启下载功能 (SPIEN)允许 ISP 下载器连接芯片绝对不能动! 否则变砖!3.5. 我的实际配置已验证当前熔丝低位值:C4当前熔丝高位值:D9熔丝低位C4→1100 0100位值含义BODLEVEL1掉电检测电压 2.7V低电压模式BODEN1BOD功能关闭SUT10启动时间配置SUT00启动时间配置CKSEL30→选择CKSEL21外部CKSEL1012MHzCKSEL00晶振结论时钟配置正确你的板子正在使用外部12MHz晶振。熔丝高位D9→1101 1001位值含义重要性OCDEN1片内调试关闭保持默认JTAGEN1JTAG 功能已关闭你的核心任务已完成SPIEN0ISP 下载功能开启绝对不能改CKOPT1晶振幅度模式保持默认EESAVE1擦除 Flash 时不保留 EEPROM保持默认BOOTSZ10Boot 区大小保持默认BOOTSZ00Boot 区大小保持默认BOOTRST1复位向量指向应用区保持默认3.6. 我在学习过程中的关键发现发现 1: JTAGEN 已经关闭学习过程中发现, 你当前的熔丝位配置中JTAGEN 1(未编程), 说明JTAG 功能已经处于关闭状态, PC2-PC5 已经被释放出来.结论:你不需要再修改熔丝位, 可以直接使用 PC2-PC5 控制电机.3.7. 发现 2: SPIEN 绝对不能动SPIEN 0已编程表示 ISP 下载功能开启。这个位是下载器的生命线一旦误改为 1USBASP 将永远连不上芯片。发现 3: 时钟源配置正确CKSEL配置为外部 12MHz 晶振, 与你的F_CPU 12000000UL完全匹配, 所以流水灯能正常跑.3.8. 关键警示必看操作后果处理方式关闭 SPIEN芯片变砖下载器无法连接只能换芯片无法通过 ISP 恢复设置锁定位LB1/LB2程序被加密无法读出/擦除只能换芯片选错时钟源芯片无法启动下载器连接失败需要用有源晶振或高压编程器救回关闭 JTAGEN释放 PC2-PC5 给普通 IO 使用这是你需要的正确操作3.9. 熔丝位操作步骤已实践验证打开ProgISP→ 点击“配置”选项卡点击“读出”→ 查看当前熔丝位状态只修改JTAGEN(取消勾选, 改为1/ 未编程)确认SPIEN保持0/ 已编程点击“写入”→ 等待完成点击“读出”→ 验证修改成功3.10. 学习心得总结必学的不用学的① 如何关闭 JTAGEN (释放引脚)锁定位 (加密模式)② 如何配置时钟源 (CKSEL)看门狗分频 (WDT)③ 不要碰 SPIENBoot 区大小 (BOOTSZ)④ 0 开启, 1 关闭掉电检测阈值 (BOD)恭喜当你坚持看到这一步时我们的任务目标已经完成相信你对“熔丝位”已经有了一定的了解至此我们所有的前期铺垫都已经完成接下来就是要写代码和调试了。最后一件事排版是用豆包辅助整理的这篇文章没有代码实操主要偏理论算是给第一坑文章打的补丁吧如果有啥问题就麻烦留言给我了总之第二坑就这样填完了后续有时间开第三坑使用 L293D 驱动电机让小车真正跑起来还有小车其实已经跑起来了只不过文章还没写编辑于 2026年7月13日18:24:34