Arduino框架下最便宜的开发芯片-CH552初探

Arduino框架下最便宜的开发芯片-CH552初探


谢鸣在本文评论区第一留言的开发者-iamseer,提供了支持Arduino IDE平台开发的WCH系列CH55x固件以及持续对本固件代码维护和更新。为此表示感谢!

  • 相关篇《【硬件开源电路】CH559L开发板和CH55x_DAP-Link二合一开发板分享》
  • Arduino框架下最便宜的开发芯片-CH552初探_第1张图片

CH55X Arduino平台环境搭建

  • GitHub地址: https://github.com/DeqingSun/ch55xduino
  • 在Arduino开发板管理器网址当中添加:https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json

如果访问不了就搭建本地网络文件服务器进行安装,将资源下载到本地,通过HFS软件挂载到本地,再通过在Arduino开发板管理器网址添加本地的访问地址即可轻松搭建好。

Arduino框架下最便宜的开发芯片-CH552初探_第2张图片

开发板选择

Arduino框架下最便宜的开发芯片-CH552初探_第3张图片

示例程序

Arduino框架下最便宜的开发芯片-CH552初探_第4张图片

编译设置选项

如果固件版本低于0.014版本需要设置为:USER CODE w/14BB usb ram,如果是固件版0.014,这里可以直接选择Default CDC
Arduino框架下最便宜的开发芯片-CH552初探_第5张图片

程序烧录

如果你的芯片是全新的,没有烧录过程序的出厂芯片,那么第一次烧录的话,可以直接通过编译上传按钮进行上传,第二次烧录以及后面的程序烧录就不一样了,需要通过官方的烧录软件WCHISPTool进行烧录。

  • WCHISPTool软件
    Arduino框架下最便宜的开发芯片-CH552初探_第6张图片

WCHISPTool软件烧录方法

  • 通过Arduino IDE导出Hex烧录文件。
    Arduino框架下最便宜的开发芯片-CH552初探_第7张图片
  • 第二次烧录(与第一次烧录有所不同),在目标板连接电脑前,需要将D+上拉到高电平,然后接入电脑USB接口上。

为什么说与初次烧录不同呢?因为CH552设计是有 [运行模式] 和 [烧录模式] 的,如果原本内部没有程序,那么会直接进入烧录模式,这也就解释了为什么我们第一次连接电脑的时候就能直接下载程序(沁恒这么设计的理由应该也是为了方便批量化生产);那么我们在第一次烧录程序完成之后呢,下次上电的时候就会直接进入运行模式,而不会进行烧录模式了(而且如果长时间处于烧录模式,单片机会自动重启进入默认的运行模式)。驱动电路D+的接V33的按键,就是为了烧录而准备的,要想在下次上电的时候进入烧录模式,只需要在上电的时候保持D+为高电平,之后在松开就可以了。

Arduino框架下最便宜的开发芯片-CH552初探_第8张图片
Arduino框架下最便宜的开发芯片-CH552初探_第9张图片

- WCHISPTool软件加载Hex文件
Arduino框架下最便宜的开发芯片-CH552初探_第10张图片

  • 加载好Hex文件后,给目标开发板断电,然后按下download按键,再上电,就可以完成程序的烧录。注意:是断电后,再按download按键,不是在断电前就将download按键按下,再重启的,否则不能进入下载阶段。

示例代码

本示例基于V0.012固件版本,默认是烧录到CH559上的,如果想在CH552上运行,将其余两个宏定义的led引脚以及相关代码注释掉即可。

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the simpleCH552
  it is attached to digital pin P3.3

  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman
  modified 13 Jun 2020
  by Deqing Sun for use with CH55xduino

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

#include "src/userUsbCdc/USBCDC.h"
#define LED_BUILTIN 12 //552--->11
#define LED_BUILTIN2 24
#define LED_BUILTIN3 25
__xdata char recvStr[64];
uint8_t recvStrPtr = 0;
bool stringComplete = false;
uint16_t echoCounter = 0;


// the setup function runs once when you press reset or power the board
void setup() {
 USBInit();
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(LED_BUILTIN2, OUTPUT);
  pinMode(LED_BUILTIN3, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN2, HIGH);
  digitalWrite(LED_BUILTIN3, LOW);
  USBSerial_println("Hello World!");
  USBSerial_flush();
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    digitalWrite(LED_BUILTIN2, LOW);
  digitalWrite(LED_BUILTIN3, HIGH);
  delay(1000); 
      
    USBSerial_println("perseverance51");// wait for a second
    USBSerial_flush();//等待串口数据发送结束(串口数据发送必不可少)
}
  • 示例项目结构
    Arduino框架下最便宜的开发芯片-CH552初探_第11张图片

CDC虚拟串口调试打印信息

Arduino框架下最便宜的开发芯片-CH552初探_第12张图片

⛳示例项目工程源码

基于V0.012固件版本程序。

链接:https://pan.baidu.com/s/1Nkkc3YxqX4KtaHZrLpf7LQ 
提取码:0bgb

你可能感兴趣的:(WCH-E8051单片机开发,Arduino框架下CH552)