找回密码
 立即注册
楼主: LeoringYang

YXRA-SDK教程 || 已持续更新到第18课,ADC/PWM/I2C/I2S/USB/CAN 都有了

[复制链接]
已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-14 10:37:24 | 显示全部楼层
第九课:模数转换ADC
STC32G系列单片机内部集成了一个12位高速A/D转换器。ADC的时钟频率为系统频率2分频再经过用户设置的分频系数进行再次分频(ADC的时钟频率范围为SYSclk/2/1~SYSclk/2/16)。 ADC转换结果的数据格式有两种:左对齐和右对齐。可方便用户程序进行读取和引用。
今天如何用YXRA-SDK开发ADC示例。在设备视图中将ADC转换放到视图中,默认属性无需修改。
附件为完项目,解压导入YXRA-SDK工具即可以测试。
截图202608141036367036.jpg
截图202608141036561049.jpg

stcproject.zip

9.21 KB, 下载次数: 7

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-15 10:12:05 | 显示全部楼层
第十课:PWM脉冲调制开发
STC32G 系列的单片机内部集成了8通道16位高级PWM定时器,分成两组周期可不同的PWM,分别命名为PWMA和PWMB,可分别单独设置。第一组PWM/PWMA可配置成4组互补/对称/死区控制的PWM或捕捉外部信号,第二组PWM/PWMB可配置成4路PWM输出或捕捉外部信号。
PWM脉冲调制涉及到的寄存器较多,YXRA-SDK对其进行了简化,提取了几个关键的属性:
PWM功能引脚:脉冲输出脚,PWMA一个通道为两个脚,PWMB一个通道为一个引脚
PWM预分频、重载计数值:控制PWM的输出频率
PWM占空比:控制PWM占空比,这里转换成百分比,由系统计算值
PWM启用中断:用于中断的业务处理
现在开始做一个简单的PWM控制LED示例,官方实验箱P6为LED,PWMA的四通道正好对应P6的8个引脚。
我们将PWMA设备放到设视中,按截图中的属性值填好,保存编译,直接下载运行即可。
附件为PWMA的示例,可直接导入到YXRA-SDK中来。
截图202608151011399090.jpg

stcproject.zip

9.33 KB, 下载次数: 6

回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-16 10:07:42 | 显示全部楼层
第十一课:TFT彩屏接口
STC32G系列的部分单片机内部集成了一个LCM接口控制器,可用于驱动目前流行的液晶显示屏模块。可驱动I8080接口和M6800接口彩屏,支持8位和16位数据宽度。
开发过程如下:
        1、通过LCMIFCFG和LCMIFCFG2配置好引脚
        2、向LCMIFDATL和LCMIFDATH中写入数据
        3、通过LCMIFCR完成命令和数据操作
    I8080 和 M6800 是两种非常经典的并行接口标准,常用于连接微控制器(MCU)和屏幕(特别是彩屏)。它们的关系,可以看作是两种不同的沟通协议,目的都是为了传输数据,只是对话方式不一样。
    它们同属于 MCU 模式接口,这种模式的特点是屏幕内部自带显示内存(GRAM),MCU 只需把数据发过去,屏幕自己就能处理显示,因此控制起来比较简单直接。而相比 SPI 串行接口,这两种并口最大的优势就是速度快,因为它们可以同时传输 8 位、16 位甚至更多的数据。
    将TFT驱动设备放到设备视图中,只调整引脚,其他属性可以不必调整。我们打开TFT驱动这个设备的代码,可以看到方法:
showPointOverLcd(int rowIndex,int colIndex,int pointColor),这个方法就是向x,y处写入颜色。建议:对于绘图这样对性能有要求的地方,只写一个方法,方法调用会涉及分配内存,造成性能下降。

回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 10:47:10 | 显示全部楼层
第十二课:同步串行外设接口SPI
SPI是一种全双工的高速同步通信总线。STC32G系列集成的SPI接口提供了两种操作模式:主模式和从模式。STC32G系列单片机内部集成了一个高速串行通信接口(SPI接口)。
SPI通信的精髓在于“数据交换”或“移位寄存器交换”,主设备和从设备内部都有一个移位寄存器。通信时,它们通过MOSI和MISO线连接成一个虚拟的环形。主设备发起:主设备拉低CS线,选中一个从设备,并开始产生SCLK时钟信号。
按位交换:在每个SCLK时钟周期,主设备从MOSI移出一个bit,同时从设备从MISO移出一个bit。这就意味着,在一个时钟周期内,数据同时向两个方向各传输了1个bit。
完成传输:经过8个(或更多)时钟周期,主设备和从设备的寄存器内容就完成了交换。也就是说,主设备每发送一个字节,必然也会接收到一个字节。因此,如果主设备只想读取数据,它需要先发送一个“空字节”来提供时钟,从而把从设备的数据“交换”回来。
本课以及后面的几课涉及bus总线通讯,与开发语言关联不大,仅做一下原理介绍。
截图202608171046419962.jpg
截图202608171046557635.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 12:59:10 | 显示全部楼层
第十三课:I2C总线开发
I2C总线,全称是Inter-Integrated Circuit,由Philips(现NXP)公司在1980年代开发,是一种非常经典、应用极广的串行通信协议。它的核心设计思想就是简单——仅用两根线,就能让主控芯片(如MCU)与多个外围设备(如传感器、存储器)进行通信。
STC32G 系列的单片机内部集成了一个I2C串行总线控制器。I2C是一种高速同步通讯总线,通讯使用SCL(时钟线)和SDA(数据线)两线进行同步通讯。对于SCL和SDA的端口分配,STC32G系列的单片机提供了切换模式,可将SCL和SDA切换到不同的I/O口上,以方便用户将一组I2C总线当作多组进行分时复用。
同上一课,简单定制一下。
截图202608171258544612.jpg
截图202608171259086951.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 13:01:21 | 显示全部楼层
第十四课:CAN总线开发
CAN总线,全称是Controller Area Network(控制器局域网),由德国博世(BOSCH)公司于1980年代为汽车电子开发。与刚才聊的I2C这种“板内聊天群”不同,CAN总线更像一个健壮的工业级对讲系统,专为长距离、高干扰、高可靠性的“设备间通信”而生。
STC32G 系列单片机内部集成两组独立的CAN总线功能单元,支持CAN 2.0B和CAN 2.0A协议。波特率可支持范围:1Mbps~10Kbps。
简单介绍一下。
截图202608171301053336.jpg
截图202608171301175213.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 13:03:23 | 显示全部楼层
第十五课:USB总线开发
USB总线,全称是Universal Serial Bus(通用串行总线),由Intel、微软等公司在1990年代中期制定。如果说I2C是芯片间的“私密对话”,CAN是设备间的“工业对讲机”,那USB就是个人电脑和消费电子领域的“万能水管”——它统一了外设接口,实现了“即插即用”和“带电插拔”.
STC32G 系列单片机内部集成USB2.0/USB1.1兼容全速USB,6个双向端点,支持4种端点传输模式(控制传输、中断传输、批量传输和同步传输),每个端点拥有64字节的缓冲区。USB模块共有1280字节的FIFO。
简单介绍一下:
截图202608171303021020.jpg
截图202608171303197111.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 13:05:56 | 显示全部楼层
第十六课:LIN总线开发
LIN总线,全称是Local Interconnect Network(本地互联网络),是汽车领域最常用的低成本总线之一。如果说CAN是汽车里的“主干道”,那么LIN就是连接各种小开关、传感器和执行器的“小区支路”,为那些对速度要求不高的场景提供了一种极致简单和廉价的通信方案。
STC32G系列单片机内部集成LIN总线功能单元,支持LIN2.1和LIN1.3协议协议。
简单介绍一下:
截图202608171305503086.jpg
截图202608171306154003.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 13:08:16 | 显示全部楼层
第十七课:I2S总线开发
I2S总线,全称Inter-IC Sound(集成电路内置音频总线),由飞利浦公司(现NXP)为数字音频设备之间的数据传输而制定。如果说I2C是芯片间的"通用对话",那I2S就是专为传输数字音频设计的"Hi-Fi专线"。它的核心设计思路是将时钟与数据信号分离,从根本上避免了音频数据在传输过程中因时钟偏差(时差)而导致的失真。
STC32G部分系列单片机内部集成I2S音频总线功能单元。
简单介绍一下:
截图202608171308018193.jpg
截图202608171308138068.jpg
回复

使用道具 举报 送花

已绑定手机

35

主题

99

回帖

1335

积分

金牌会员

积分
1335
 楼主| 发表于 2026-8-17 13:16:28 | 显示全部楼层
结束语
我没有想到yxra受到了不少人的关注,出乎我意料之外。在此感谢。在这些课程中,基本都有程序源码的截图。这些源码是由配置生成,而不是输入的程序。
yxra语言最初是冲着操作系统去的,面向对象的特性对于资源不多的单片机来说,是一种奢侈。用yxrasdk开发过的人会发现,用c或汇编开发编译后,一个简单的功能常常不足1k,然后用yxra语言编译会狂升到20k。这个源于面向对象的特性,yxra编译过程中不能只提取用到的方法和属性,因为抽象、继承等原因,访问的方法与属性是动态变化的。比如某个对象A中有个属性对象B,只有在运行中过程中才会确认对象B会不会是它子类的对象C。
yxra语言在单片机的开发上有优势吗?还是有的,没那么明显,源于对象的封装特点,抽象特点。如果我们开发中遇到开发板上的某个元件的修改,在面向对象开发中修改的仅仅是这个元件的类。c和汇编也能实现,那需要开发者对开发架构的把控。而面向对象的开发本身就是这样的一种架构。
放在十年前,内存不足就可以直接让yxra语言退出单片机这个领域。幸运的是yxra赶上了这个好时机,很多32位单片机都满足了32k内程要求。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-22 11:34 , Processed in 0.073757 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表