当前位置: 首页 > news >正文

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

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


  • 相关篇《【硬件开源电路】CH559L开发板和CH55x_DAP-Link二合一开发板分享》
  • 在这里插入图片描述

CH55X Arduino平台环境搭建

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

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

在这里插入图片描述

🍭开发板选择

在这里插入图片描述

🌿示例程序

在这里插入图片描述

👉编译设置选项

在这里插入图片描述

🗝程序烧录

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

  • WCHISPTool软件
    在这里插入图片描述

WCHISPTool软件烧录方法

  • 通过Arduino IDE导出Hex烧录文件。
    在这里插入图片描述
  • 第二次烧录(与第一次烧录有所不同),在目标板连接电脑前,需要将D+上拉到高电平,然后接入电脑USB接口上。

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

在这里插入图片描述
在这里插入图片描述

-🎯 WCHISPTool软件加载Hex文件
在这里插入图片描述

📝示例代码

本示例默认是烧录到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();//等待串口数据发送结束(串口数据发送必不可少)
}
  • 示例项目结构
    在这里插入图片描述

🎯CDC虚拟串口调试打印信息

在这里插入图片描述

⛳示例项目工程源码

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

相关文章:

  • Java高并发编程实战5,异步注解@Async自定义线程池
  • 前端进阶——ES6
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • 【Python+大数据】第一天:安装VMware及Centos,配置虚拟机网络,学习Linux命令。研究生开学10天的感受。
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • JAVA代码操作HDFS
  • web前端开发基础教程一
  • 原子尺度仿真对材料设计效率的提升,是未来材料研发的关键核心竞争力
  • CDH 10Cloudera Manager Kerberos安装配置CA配置(markdown新版三)
  • RedHat7无法安装Telnet
  • LeetCode刷题(二):前言
  • 网络套接字实现TCP机制通信
  • 一个非教条式的TDD例子
  • Spring 整合 MyBatis
  • Verilog 有符号数详解(含代码验证)
  • 网络传输文件的问题
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Javascript 原型链
  • JavaScript中的对象个人分享
  • Java程序员幽默爆笑锦集
  • Laravel 菜鸟晋级之路
  • Laravel核心解读--Facades
  • Logstash 参考指南(目录)
  • Object.assign方法不能实现深复制
  • Protobuf3语言指南
  • Python语法速览与机器学习开发环境搭建
  • sublime配置文件
  • use Google search engine
  • vue-router 实现分析
  • Vue小说阅读器(仿追书神器)
  • 将回调地狱按在地上摩擦的Promise
  • 两列自适应布局方案整理
  • 那些被忽略的 JavaScript 数组方法细节
  • 设计模式 开闭原则
  • ​如何防止网络攻击?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​业务双活的数据切换思路设计(下)
  • #HarmonyOS:Web组件的使用
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1) caustics\
  • (2015)JS ES6 必知的十个 特性
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (java)关于Thread的挂起和恢复
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (算法)前K大的和
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)大型网站架构演变和知识体系
  • (总结)Linux下的暴力密码在线破解工具Hydra详解