Nulllab - 资料和文档
...
名字 Nano V3.1
参数 CH340G下载芯片 内部晶振 16M主频 PCB尺寸:45x18MM
特点 Mini-Usb接口 尺寸完全兼容官方arduino nano 3.0
写在之前
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,可内置晶振,反正就是把一些现代IC设计的一些主流技术应用在老的AVR框架上,出来也有5年多了,但是一直没怎么大规模应用,因为当时大家对国产的芯片天然不信任,以为这是山寨克隆版,实际这是一颗兼容芯片,类似于GD32之于STM32一样。LGT公司发展至今也早已有其他产品线,所以重心也没有全部放在兼容arduino的生态上,官方SDK也在2019年后已经停止更新维护,国外有个开源项目还在更新。nulllab技术团队大部分来自国际一线芯片原厂,已在创客开源软硬件行业沉浸多年。决定为国产创客软硬件生态做一点事情,我们先从LGT系类芯片做起,继续基于官方SDK做优化升级
Nulllab软件包特点
官方sdk也好,还是国外另外一个软件包,其实都没有做到百分百之百兼容原生的arduino,特定应用还是存在有bug,nulllab团队致力于解决这些bug,并且把LGT8F328P相对于Atemag328P增加的功能添加进来,发挥这颗芯片的最大性能。那么对于小批量的产品而言,完全可以采用这个芯片来用Arduino IDE的方式开发产品,将大大简化开发难度。
Nulllab开发板Arduino IDE支持包
  1. 1、文件->首选项,得到如下界面
  2. 2、在附加开发板管理器网址输入如下网址:

  3. 3、工具->开发板->开发板管理 搜索nulllab,选择最新版本安装(如果搜索不到,请安装arduino IDE1.8.15以上)
  4. 4、开发板选择
Mixly支持包
  1. 1、下载支持主板的 安装包
  2. 2、打开Mixly,按照下面提示即可以上传程序
Magicblock(基于scratch3.0)图像化软件支持
  1. 1、下载MagicBlock
  2. 2、安装好MagicBlock,并且打开MagicBlock
  3. 3、点击MagicBlock左下角的产品选择按钮,主板选择Nano Pro;
  4. 点击返回,即可以图形化编程。如下图

LGT8F328P和Atmega328P芯片对比

LGT8FX8P系列微控制器目前主要包括LGT8F328P, LGT8FX8P系列实现LGT8XP增强8位RISC内核, 支持16位数字运行扩展, 在1.8V – 5.5V的工作范围内, 可运行在最高32MHz的核心频率; LGT8F328P内部32K字节FLASH程序存储器, 2K字节数据SRAM, 内置将FLASH模拟为EEPROM的控制逻辑, 可以根据应用需要将程序FLASH的一部分划分为数据FLASH空间, 通过EEPROM控制器实现类似EEPROM的接口访问. LGT8F328P集成了丰富的模拟外设, 包括12位ADC, 可编程增益差分放大器, 高精度1.024/2.048/4.096V内部参考电压, 8位DAC以及高速模拟比较器; 同时LGT8F328P内部也集成了常用的数字接口控制器, 支持多路互补PWM输出以及死区控制。8F328P架构设计比较新,外设功能远远强于Atmega328P。尤其是程序加密能力更是远超Atmega328P。
DIY模式说明
如果是在市面上购买其他厂家的硬件如果需要使用这个软件包存在上传不了,可以使用如下模式
示例程序
  1. SysClock - 外部晶振和系统时钟配置方法
  2. AnalogRead - 12位ADC读取方法
  3. Timer3 - 定时器3使用方法
SysClock 配置
  1. sysClock() 设置时钟晶振内部32K,32M,外部32K,400K,1M,2M,4M,6M,8M,12M,16M,32MHz
  2. sysClockPrescale() 设置系统时钟分频系数0,2,4,8,26,42,64,128分频
AnalogRead 读取
  1. analogReference() 设置adc参考电压 DEFAULT 供电电压AVCC EXTERNAL 外部参考电压IOREF INTERNAL1V024 内部高精度1.024V INTERNAL2V048 内部高精度2.048V INTERNAL4V096 内部高精度4.096V
  2. analogReadResolution() 设置adc精度有两种ADC10BIT和ADC12BIT默认精度是10bit
  3. sysClockOutput() 1:使能D8引脚输出CPU系统主频 0:关闭D8输出
Timer3支持
  1. MsTimer3::set(timeout, func) 设置timeout为定时时间单位ms, func为定时函数
  2. MsTimer3::start() 启动定时器3
LGT8F328P as ISP
基于Atmega328P的Arduino Uno系类主板是可以给LGT8F328P系列烧录bootloard的,那么当然基于LGT8F328P的主板也同样可以给LGT8F32P系类芯片烧录bootloard的,他们的接线,烧录方法完全一致。
你的手里LGT系类主板或者arduino主板需要先烧录Lgt328P_ISP程序然后参考下载方法
感谢
Larduino_HSP 官方库支持已经完成了大部分适配工作,但是2019年已经停止更新,nulllab基于官方软件包继续维护
lgt8fx 添加了新功能和修复了bug
感谢emkefun,keywish两个公司生产了对应的硬件,并使用了此软件包