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

LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第1张图片

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、开发板选择
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第2张图片

Mixly1.0支持包

1、下载支持LGT主板的Mixly安装脚本window版Mixly安装脚本Mac版

a、将LGT_Mixly_Update放到Mixly_WIN根目录下

b、双击运行–>输入y–>回车

2、打开Mixly,按下面提示即可以编译上传程序
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第3张图片

Mixly2.0支持包

经过nulllab团队和mixly官方联系,Mixly2.0官方云端已自带LGT芯片的库,所以导入比较方便,下载最新版本的Mixly安装包,打开Mixly2.0软件,或者双击软件左上角Mixly图标 课件见到选择主板首页,然后操作下图步骤;
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第4张图片
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第5张图片

Magicblock(基于scratch3.0)图像化软件支持

1、下载MagicBlock

2、安装好MagicBlock,并且打开MagicBlock

3、点击MagicBlock左下角的产品选择按钮,主板选择Nano Pro;
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第6张图片

点击返回,即可以图形化编程。如下图
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第7张图片

开发板

基于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三个封装芯片详细查看数据手册 。
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第8张图片

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模式说明

如果是在市面上购买其他厂家的硬件如果需要使用这个软件包存在上传不了,可以使用如下模式
LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第9张图片

示例程序

  • 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.096V

  • analogReadResolution()
    设置adc精度有两种ADC10BIT和ADC12BIT默认精度是10bit

  • sysClockOutput()
    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_4V4

  • soft_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程序然后参考*下载方法*

LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册_第10张图片

**LGT开源烧录器 **

可以直接前往LGT-Open-ISP

你可能感兴趣的:(C程序设计框架,单片机,单片机,嵌入式硬件,mcu,github,硬件工程)