LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册
写在之前
arduino uno R3自发布至今已有10多年,早已风靡全球,它的主控采用的是Atmel公司的Atmega328P主控,这是一颗基于AVR架构的8位单片机,面世有数十年了。得益于arduino完整软硬件生态,基于arduino uno的产品和项目不计其数。但是真正采用Atmega328P来量产的项目,却很少,因为这个芯片性价比很低。今年芯片缺货,导致对创客生态影响也很大,偶然的机会了解到LogicGreen的LGT8F328P,发现这是一款国产指令集兼容 AVR,Atmega328P的芯片,经过严格测试,发现能够99%兼容Arduino IDE。Nulllab团队是专门基于国产芯片做开发板的自由技术组织,为此我们专程拜访了LGT公司,和这颗芯片设计者详细了解到,这是一颗增强8位RISC内核,针对原来架构的做了优化,指令执行速度快了一些,同时优化了flash部分,增加定时器3,内置晶振,增加DAC输出,主频最高可到32M,功耗更低。反正就是把一些现代IC设计的一些主流技术应用在老的AVR框架上,出来也有5年多了,但是一直没怎么大规模替代Atmega328P来做arduino产品,因为当时大家对国产的芯片天然不信任,以为这是山寨克隆版,实际这是一颗兼容芯片,类似于GD32之于STM32一样。LGT公司发展至今也早已有其他产品线,所以重心也没有全部放在兼容arduino的生态上,官方SDK也在2019年后已经停止更新维护,国外有个开源项目还在更新。nulllab技术团队大部分来自国际一线芯片原厂,已在创客开源软硬件行业沉浸多年。决定为国产创客软硬件生态做一点事情,我们先从LGT系类芯片做起,继续基于官方SDK做优化升级
Nulllab软件包特点
官方sdk也好,还是国外另外一个软件包,其实都没有做到百分之百兼容原生的arduino,特定应用还是存在有bug,nulllab团队致力于解决这些bug,并且把LGT8F328P相对于Atemag328P增加的功能添加进来,发挥这颗芯片的最大性能。那么对于小批量的产品而言,完全可以采用这个芯片来用Arduino IDE的方式开发产品,将大大简化开发难度。
打勾的代表已经实现并验证,没有打勾的代表正在开发中,期待更多开发者一起维护
- 去掉停产D后缀系类的芯片
- DIY模式支持主频选择
- DIY模式支持外部晶振配置选择
- ADC参考电压选择,默认10bit精度,兼容官方API
- 修复CH340G芯片下载程序概率失败
- 精准延时
- (增强型功能) 兼容Arduino EEPROM API DIY模式EEROM大小可以自由选择0,2,4,8KB
- Arduino uno/LGT As ISP下载器使用
- (增强型功能) 支持timer3
- (增强型功能) 快速ADC
- (增强型功能) 快速IO口 减少代码体积,大大提升执行效率
- (增强型功能) 2~6引脚80mA电流输出
- (增强型功能) 把AREF引脚当作A10
- (增强型功能) 低功耗电源管理
- (增强型功能) DAC功能
- (增强型功能) 不使用eerom,直接操作flash
- 软件串口适用所有频率
- 读取32位芯片UUID
Nulllab开发板Arduino IDE支持包
安装包
方法一、网络安装
1、文件->首选项,得到如下界面
2、在附加开发板管理器网址输入如下网址:
https://gitee.com/nulllab/nulllab_arduino/raw/master/package_nulllab_boards_index_zh.json
如果上面的网站打不开可以试下另外一个
https://cdn.jsdelivr.net/gh/nulllaborg/arduino_nulllab/package_nulllab_boards_index_zh.json
3、工具->开发板->开发板管理
搜索nulllab,选择最新版本安装(如果搜索不到,请安装arduino IDE1.8.15以上)
方法二、手动安装
1、直接点击下载最新LGT Arduino IDE软件支持包
2、将下载后的文件解压将里面的文件拷贝到(IDE安装目录)arduino-ide\hardware\arduino_nulllab-master\avr\下,如果没有该目录文件,请先创建对应名字的文件夹,最后要
这个目录下要看到 boards.txt和platform.txt等这些文件,就代表软件包安装正确。
3、重新打开Arduino IDE应用程序
4、开发板选择
Mixly1.0支持包
1、下载支持LGT主板的Mixly安装脚本window版,Mixly安装脚本Mac版
a、将LGT_Mixly_Update放到Mixly_WIN根目录下
b、双击运行–>输入y–>回车
2、打开Mixly,按下面提示即可以编译上传程序
Mixly2.0支持包
经过nulllab团队和mixly官方联系,Mixly2.0官方云端已自带LGT芯片的库,所以导入比较方便,下载最新版本的Mixly安装包,打开Mixly2.0软件,或者双击软件左上角Mixly图标 课件见到选择主板首页,然后操作下图步骤;
Magicblock(基于scratch3.0)图像化软件支持
1、下载MagicBlock
2、安装好MagicBlock,并且打开MagicBlock
3、点击MagicBlock左下角的产品选择按钮,主板选择Nano Pro;
点击返回,即可以图形化编程。如下图
开发板
基于LGT8F328P系列主控针对于不同创客用场景的开发板
硬件参考设计
|
其他基于LGT8F328P的开源项目
- (rf-nano) LGT8F328P+nRF24L01+模块无线传输模块
- (grbl) 基于LGT8F328P-Grbl项目
- (t12-soldering-station) 基于LGT8F328P的T12开源焊台
- (晶体管测试仪)
- memcard 内存卡读卡器
- LGT-Open-ISP
LGT8F328P和Atmega328P芯片对比
LGT8FX8P系列微控制器目前主要包括LGT8F328P-SSOP20,LQFP32,LQFP48三个封装芯片详细查看数据手册 。
1、增强8位RISC内核, 支持16位数字运行扩展, 在1.8V – 5.5V的工作范围内,支持内部晶振,可运行在最高32MHz的核心频率;
2、LGT8F328P内部32K字节FLASH程序存储器, 2K字节数据SRAM, 内置将FLASH模拟为EEPROM的控制逻辑, 可以根据应用需要将程序FLASH的一部分划分为数据FLASH空间, 通过EEPROM控制器实现类似EEPROM的接口访问,如果使用eerom的话总flash只有30K,比他Atmega328P少2K;
3、LGT8F328P集成更多硬件资源和外设, 包括12位ADC,timer3, 高精度1.024/2.048/4.096V内部参考电压, 8位DAC以及高速模拟比较器,A6/A7,SWC,SWD,REST,晶振引脚都可以配置成GPIO口,详情说明如下:
32pin TQFP/QFN封装 | ATmega328P | LGT8F328P | 扩展的Arduino引脚功能 |
---|---|---|---|
Pin2 | XCK/T0/PD4 | XCK/T0/DA0/PD4 | |
Pin3 | GND | OC1B/OC0A/PE4 | 24 |
Pin6 | VCC | AC10/OC1A/PE5 | 25 |
Pin7 | XTALO | XTALO/PB6 | 27 |
Pin8 | XTALI | XTALO/PB7 | 28 |
Pin18 | AVCC | PE0/SWC | 22 |
Pin19 | ADC6 | PE1/ADC6 | 20可做IO口 |
Pin20 | AREF | PE6/ADC10/AVREF | 26/A10 |
Pin21 | GND | PE2/SWD | 23 |
Pin22 | ADC7 | PE3/ADC7 | 21可做IO口 |
Pin31 | PD1/TXD | PD1/TXD/OC3 | |
Pin32 | PD2/INT0 | PD2/INT0/OC3B |
4、LGT8F328P架构设计比较新,外设功能远远强于Atmega328P。尤其是程序加密能力更是远超Atmega328P。
DIY模式说明
如果是在市面上购买其他厂家的硬件如果需要使用这个软件包存在上传不了,可以使用如下模式
示例程序
- SysClock - 外部晶振和系统时钟配置方法
- AnalogRead - 12位ADC读取方法
- Timer3 - 定时器3使用方法
SysClock 配置
- sysClock()
设置时钟晶振内部32K,32M,外部32K,400K,1M,2M,4M,6M,8M,12M,16M,32MHz - sysClockPrescale()
设置系统时钟分频系数0,2,4,8,26,42,64,128分频
AnalogRead 读取
analogReference()
设置adc参考电压
DEFAULT 供电电压AVCC
EXTERNAL 外部参考电压IOREF
INTERNAL1V024 内部高精度1.024V
INTERNAL2V048 内部高精度2.048V
INTERNAL4V096 内部高精度4.096VanalogReadResolution()
设置adc精度有两种ADC10BIT和ADC12BIT默认精度是10bitsysClockOutput()
1:使能D8引脚输出CPU系统主频 0:关闭D8输出
FastIO操作
用arduino标准api直接操作 IO模拟pwm或者去读默写高速外设时,会发现实际上代码体积大,执行效率很低。我们提供了快速io口操作api,速度可以提升2/3,代码体积可以减少16byte
- fastioMode(pin, dir)
pin为引脚编号,dir为控制方向和pinMode兼容 - fastioWrite(pin, val)
pin为引脚编号,value为控制方向和digitalWrite兼容 - fastioRead(pin)
读取pin引脚的电平 - fastioToggle(pin)
快速翻转pin引脚上的电平
Timer3支持
- MsTimer3::set(timeout, func)
设置timeout为定时时间单位ms, func为定时函数 - MsTimer3::start()
启动定时器3
EEROM操作
- *read_block(uint8_t , uint16_t, uint8_t)
- *write_block(uint8_t , uint16_t, uint8_t)
读写eerom数据到缓存 - read32(uint16_t)
- write32(uint16_t, uint32_t)
读写eerom 32bit数据 - **write_swm(uint16_t, uint32_t *, uint8_t) **
- *read_swm(uint16_t, uint32_t , uint8_t)
连续模式读写数据到缓存
低功耗电源管理
set_lvd(lvd_t lvd)
LGT8F328P为低功耗芯片,工作电压为1.8V~5.5V,所以很多在电压1.8V时就可以工作,但是很多事情其他外设还没有工作导致出问题,这个函数可以设置低压检测复位电压,来避免这个问题,电压选择如下,默认为关闭状态。
PM_LVD_1V8,
PM_LVD_2V2,
PM_LVD_2V5,
PM_LVD_2V9,
PM_LVD_3V2,
PM_LVD_3V6,
PM_LVD_4V0,
PM_LVD_4V4soft_reset(void)
软件复位sleep(pmu_t mode, period_t period = SLEEP_FOREVER);
低功耗模式(具体查看手册描述)
PM_IDLE
PM_POWERDOWN
PM_POFFS1
PM_POFFS0
PM_POFFS2
period 为唤醒时间间隔,SLEEP_FOREVER为直接睡眠
LGT8F328P as ISP
基于Atmega328P的Arduino Uno系类主板是可以给LGT8F328P芯片烧录bootloader的,那么当然基于LGT8F328P的主板也同样可以给LGT8F32P系类芯片烧录bootloader的,他们的接线,烧录方法完全一致。
你的手里LGT系类主板或者arduino主板需要先烧录Lgt328P_ISP程序然后参考*下载方法*
**LGT开源烧录器 **
可以直接前往LGT-Open-ISP
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册相关推荐
- Android技术应用实验指导书,Android应用开发实验指导书
第 1 页手机应用开发实验指导书西南科技大学计算机科学与技术学院2015.11第 2 页目录手机应用开发 .1实验指导书 .1实验一:搭建 Android开发平台和创建 HelloWorld程序 .- ...
- 边缘计算网关linux开发,边缘计算网关(BMG800系列)二次开发指导手册
边缘计算网关二次开发指导手册 库函数接口介绍 (适用于:BMG800系列) 目录 1. 获取温湿度(硬件设备为sht10) 2. 获取大气压(硬件设备为bmp180) 3. 读取ADC值(硬件设备为m ...
- C语言到嵌入式Linux开发项目指导
C语言到嵌入式Linux开发项目指导 第一阶段C语言 1.常量与变量,数据类型,数据类型转换,数据输入与输出: 2.C语言运算符,C语言操作符,C语言表达式,表达式优先级: 3.C语言流程控制,分支, ...
- LVGL开发指导手册
LVGL开发指导手册 一,简介 介绍 LVGL(轻度综合图形界面库)作为一个免费开源图形库能够提供几乎所有的嵌入式GUI.该开源库有使用方便,画面美观,内存占用低等优点. 1,收集资料 2,窗口初始化 ...
- 万事开头难(一)——Cocos2d-JS游戏开发入门指导
当你信心满满,斗志昂扬地下定决心学习新技术时,你是否也有这样的感觉:技术还没学,却在配置环境上浪费了大量时间, 最重要的是,无论怎样,就是配不对,想怒砸电脑!!!你是否还有这样的感觉:一头扎进去学了好 ...
- openGauss数据库开发指导手册(下)
本篇将介绍学校数据模型以及学校数据模型表操作. 1.4 学校数据模型 1.4.1 关于本实验 以学校数据库模型为例,介绍openGauss数据库数据库.表.表空间.用户及其它对象,以及SQL语法使用的 ...
- MBD开发流程指导书---->建模(一)
本文将以有刷直流电机的PWM调速和故障诊断模块为例子,说明MBD开发流程 (在此文章中,关于有刷直流电机PWM调速原理和故障技术,不再作为重点进行讲解,只说明利用simulnk进行MBD开发流程) M ...
- 涂鸦智能CBU二次开发指导手册入门版——智能插座
基础版介绍了手机端-云端-终端的配置方法.相互关系.以及控 制原理,对涂鸦智能硬件设备有了初步的了解. 本书为涂鸦 SDK 开发入门指导,通过修改 demo 代码实现使用手 机端控制终端 LED 的功 ...
- linux开发实验指导,嵌入式linux系统设计与开发实验指导书V1.5V7.1(全文完整版)...
<嵌入式linux系统设计与开发实验指导书V1.5.doc>由会员分享,可免费在线阅读全文,更多与<嵌入式linux系统设计与开发实验指导书V1.5(V7.1)>相关文档资源请 ...
最新文章
- Android/Java 单例使用总结
- 月薪50K的机器学习工程师,需要具备哪些条件?
- 【重大更新】DevExpress v17.1新版亮点(ASP.NET篇)
- 学习Kotlin(七)反射和注解
- mybatis原始mapper开发未集成springMVC
- 微信html代码怎么换行,微信公众号代码区域换行问题(解决)
- 安卓按键命令库教程(紫猫版续)
- 汉字识别原理、方法与实现
- Gradle sync failed: 句柄无效。 的解决方法
- 世界上第一个徒步环球旅行的人
- 【Python训练营】Python每日一练----第28天:鲁卡斯队列(round函数用法)
- php中获得上个月的同一时间,PHP判断两个给定日期是否在同一周的方法
- 树莓派配置IP地址和wifi方法
- 进制之间的相互转换(超详细)
- 火狐浏览器(Google搜索引擎)点击新链接默认为在新版标签页打开链接
- 使用基本线条库进行码绘
- 新型电源系统软件测试,新型电机性能测试系统-电力测功机
- 已解决(Python安装报错)Visit python.org to download an earlier version of Python.
- kafka小白教程从入门到精通
- obj模型转json模型_2D转3D!14位艺术家的动漫模型作品欣赏~
热门文章
- kademlia算法学习(区块链P2P网络设计)
- python+openCV+pyqt5实现播放器
- php用while循环求偶数和,算法之求1到100(奇数、偶数)的和(for和while循环)
- 高一计算机应用基础期末试题及答案,计算机应用基础试题及答案110167.doc
- TSM12M(TSM16C)驱动程序及注意事项
- 【编译原理核心知识点总结】第三章、正则文法、NFA、DFA
- 【Unity3D】Android Studio 工程中使用 Java 代码调用 Unity 的 C# 脚本 ( Java 中调用 UnityPlayer#UnitySendMessage 方法 )
- iTOP3568开发板Android 摄像头测试程序
- 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计
- 基于zynq7000与ad9361的移植与平台搭建