找回密码
 立即注册
楼主: 大亮

《STC教学研讨会STC8H/STC32G》--学习记录/学习心得--打卡帖 | 建议送

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-8 00:00:29 | 显示全部楼层
总线通信SPI I2C等的预备知识是串口,串口的预备知识是定时器、定时器的预备知识是中断,通过汇编再认识C,预备知识计算机组成原理和数字电路
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-8 00:06:26 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:32 编辑

CPU+丰富的外围控制接口
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-8 11:19:41 | 显示全部楼层
本帖最后由 大亮 于 2023-9-9 05:33 编辑

2023/08/30 STC8H8K64U教学  SPI 接口 课堂笔记



SPI 电路原理图上看到 MOSI MISO SCLK  ---> 用到SPI

内部框图: SPI核心模块: 内部数据总线 --> 8位移位寄存器 数据缓冲区 (双向 输入输出)---> 引脚控制逻辑

单主单从: 主 SSSIG 设置为1  MSTR设置为1         从 SSIG设置为0                通过8个脉冲,主机和从机互换8为移位寄存器

双器件:

一主多从:  主 SSSIG 设置为1  MSTR设置为1         从 SSIG设置为0 SS管脚作为从机片选信号
截图202309080745028505.jpg 传输完一个字节后,SPI始终发生停止,SPIF传输完成标志置位,SPI中断请求标志清零 SPI中断执行,CPU跳转到中断服务程序的入口地址004BH处执行中断服务程序


SPI应用层数据格式定义:波形图
SPICLK: IDLE ACTIVE   具体高电平低电平可以配置   IF  CPOL,, IDLE=低电平 active=高电平   CPOL 控制SCLK的极性
前沿采用,后沿发生变化 MOSI      DORD = 0 (DATA ORDER) msb ——》LSB  bit7 ~~bit0

相位! 前沿驱动、后沿采样

实例和测试 需要实验箱

截图202309081027218217.jpg

控制寄存器、状态寄存器、BUFFER

SPATAT[SPIF] 通过软件向其写入1而清零

应用举例:
1、设置相关IO端口工作模式
2、SPI控制寄存器 设置:  SPCTL : 8个位功能  SSIG SPEN DORD MSTR CPOL CPHA SPR1~SPR0
3、写1清零 SPIFWCOL
4、开发SPI中断 IE2中ESPI=1
5、开放总中断 IE中EA=1

典型应用,SPI连接液晶
/*有板时再review*/
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-8 16:32:58 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:25 编辑

2023/09/4 STC8H8K64U教学  I2C 总线 接口 课堂笔记



I2C INTER INTERGRATED CIRCUIT 简单、有效、时序! transmitter RECEIVER MASTER SLAVER MULTI-MASTER ARBTRITION SYNC

通信原理--> 约定怎么通信    SDA serial data 串行数据线    SCL 串行时钟 Serial clock

SCL为高,评估SDA的变化,SDA1变0, start,,SDA  0到1 STOP

SCL高电平时,SDA保持稳定

空闲: 双高电平
启动信号: SCL高  SDA高边低
传输一位一位:SCL低 SDA允许改变
停止:SCL 高 SDA 低变高
空闲:SCL 高   SDA 高

I2C总线上每一个器件都有唯一的地址,主从通信包含地址码和数据

START后 主机拉低SDA,主机接着发出包含7为从机地址和1位读写标志的8个数据位                       从机接收 R/W为0,RW为1,从发数据

主机控8个SCL脉冲 拉低,SDA置高电平,并产生第九个时钟脉冲,如果被寻址从机要响应,从机此时把SDA拉低,表示一个ACK。  如果总线上灭有拉低(此位持续高)主机认为 NACK,多字节数据传输过程终止
截图202309081500045099.jpg


主机 R/W为1 要读, 从机ACK后,从机就发送放方,从机向主机发,每次低9个时钟脉冲时,SDA线置高供主机拉低ACK
截图202309081506502579.jpg

写操作,写数据,主机向从机发送数据
读操作,读数据,主机从从机获取数据            ======数据的发送器、数据的接收器,时钟由主机发送
器件类型识别码 : 高4位E器件识别符 EPROM -1010 后面三3位器件地址 A2 A1 A0 [0 0 0] + R/W 1为读操作   0 为写操作   #define SLAW 0XA0  #define SLAR 0xa1


写操作 : 字节写   页面写
字节写
1、首先发动开始为来通知芯片执行传输
2、传送器件地址字节加R/W bit 0
3、分开传送十六位地址的高低字节,再传写入数据
4、发送停止位结束本次传输
截图202309081539089683.jpg


页面写!
1、单字节写的节奏
2、发送第一个字节的地址
3、一次性发送多字节的目标数据
4、发停止位
5、页面写入过程中其余的地址增量由芯片字节内部完成
截图202309081543169848.jpg


编写用户程序时可以在写入的时候不停发送伪指令查询是不是由ack反回

读操作:读器件 读任意地址 读连续

读任意地址:指定一个地址

连续读: CPU回给芯片一个低电平ACK,芯片地址指针自动加一,继续发,直到CPU不回ACK (NACK)

实战I2C
主机模式,提供时钟脉冲 SCLK -     从机模式  获取SCLK
截图202309081603292770.jpg 公共部分、主机部分、从机部分

主机模式的I2C接口初始化:
1、IO口工作模式设置
2、选择I2C引脚,使能主机模式, 设置速度I2CCFG
3、清0相关标志位
4、如果需要,开放I2C中断 I2CMSCR中的EMSI=1
5、开放总中断 IE中的EA=1

24C02 256字节存储容量 CSDN
ALTIUM DESIGNER


STC代码:
本地变量声明 .h
本地函数声明 .h
函数的定义 从
void main(void)
{
IO配置
熄灭出马管
定时器
引脚选择
主机莫斯
打开中断为了定时器
}
信息显示函数
定时器中断函数
函数表示的小命令:wait() start() SendData()RecvACK()RecvDta()SendACK()writeNbyte() ReadNbyte()

############################################################################




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-9 11:43:17 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:25 编辑

2023/08/28 陈工讲基于库函数的串口用法 课堂笔记


//USB转TTL 短路片 P3.0 P3.1

ST8-ISP -->资料下载 --> STC8G-STC8H-LIB->独立例程--》串口1串口2中断模式与电脑收发测试

通过接收看到发送不完全出现覆盖,解决方法:设置延时 (不好方案),增加发送缓冲区(接受内容小于发送缓冲区,否则产生溢出、发送指针U8 如果加大,指针u16), 使用队列模式(队列、阻塞,队列缓冲区小没问题、CPU处理其他内容,最优)

USB CDC :包含头文件和库文件 相关变量初始化 扩展寄存器使能打开 配置IO口 调用初始化USB函数 使能USB中断 使能CPU中断 USB配置完成确认(等待)

中断模式:加载的库函数不一样而已

STM32和C51的不同:内核不同,编译器不同

CDC是一个USB的模式,USB串口设备

USB device host  单片机只能做device

DMA串口:中断号0~31keil支持。解决方案,新建isr.asm,中断向量大于31的映射串口。





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-9 20:30:49 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:26 编辑

2023/08/28, 梁工讲MODBUS,课堂笔记


应用层控制协议 工控 PLC 全球通用 协议文本 报文传输协议 询问/应答协议 纯软件协议与硬件无关


两种传输模式 :ASCII RTU


一主多从 RTU模式 信息中所有数据都死十六进制传输 每一帧都要连续传输
数据位: 1起始位   8位数据, 地位先送     奇偶校验占1位    3.5个字符(字节)世间法空闲


写多寄存器:
地址【1】 功能吗【1】  寄存器地址【2】 寄存器个数【2】 写入字节【1】 写入数据【2*n】 校验CRC16【2】

地址:从机设备地址 0x00~0xff 0x00广播,从机不返回信息
功能码:本次命令的操作功能,查询编码文本                      功能码 0x10:写多个寄存器
寄存器地址: MODMBUS协议对数据的都是基于寄存器访问的,每个寄存器2个字节(word),高字节在前,低字节在后

要写入的寄存器个数, 0x0004表示写入4个寄存器

要写入的字节数: 0x08表示要写入8个字节(4个寄存器)

8个字节要写入的数据

CRC16 2个字节(小端模式,低字节在前、高字节在后)

CRC判断、地址判断
从机返回:
地址【1】  功能吗【1】 寄存器地址【2】  寄存器个数【2】 CRC16【2】

返回错误帧:
地址【1】  错误码【1】 CRC16[2]

TX 10 10 1000 0004 08 12 34 56 78 90 AB CD EF 49 30

RX 10 03 10 00 00 04 43 88 10 03 06 12 34 56 78 90 AB CD EF D5 3B

实现代码详解。。。
timer0_config()
void UART1_CONFIG(U32 BRT, U8 TIMER ,U8 EIO)

代码模块化,分层,串口完成数据传输,报文处理、怎么用由上层处理
代码详解。。。





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-10 11:02:19 | 显示全部楼层
本帖最后由 大亮 于 2023-9-10 16:26 编辑

《STC32位8051单片机原理及应用-STC32G12K128》2023/7/25


STC32位51 单精度浮点、三角反三角函数   FPGA,芯片研究的前端


分析内核--》汇编语言(向上接口,向下底层逻辑)--》丰富外设(性能、难度超意法半导体)--》操作系统在STC32上运行


单片机,在单个集成电路芯片IC上的小型计算机,微控制器,MCU通常包含一个多个中央处理器单元CPUs、易失性和非易失性存储器、以及可编程的输入输出设备


通过MCU内的相位锁相环电路Phase Locked Loop PLL,基于该时钟源可以产生不同披绿的相位的其他时钟信号,以提供给MCU内的所有功能单元。 晶体震荡器OSC 内部RC电路


CPU是MCU中的核心功能单元。CPU的指令集架构(Instruction Set Architecture ISA)的具体实现,成为微架构(Microarchitecture),它所采用的ISA决定MCU的性能和功能


SRAM是静态随机访存储器STATIC RANDOM ACCESS MEMORY,主要用于暂时保存在程序运行过程中所需要的数据,易失性存储器的角色。6个晶体管保存一个bit,成本高


Flash是闪存,用于保存程序代码,非易失性存储器角色(Flash之前,ROM或一次性可编程ROM OTPROM)


UART串口设备 MCU中UART是标准配置,通常用于外设扩展和设备调试


GPIO是单片机基本功能,输入输出,GPIO可以产生中断


TIMER定时器,定时和计时,为操作系统提供嘀嗒,


Int Controller中断控制器,MCU处理内部外部事件的能力,CPU快速高效响应并处理内部外部事件,为外设提供中断向量,提供能力


EMIF externalmemoryinterface 外部存储器接口,为MCU提供了连接片外SRAM芯片的能力

ADC和DAC 混合信号发展方向 模拟世界和数字的桥梁

低功耗工作模式,控制功耗

MCU朝着片上系统SoC System on Chip方向发展,板--》片

CPU主频 跑在MCU上嵌入式操作系统μC-OS  FreeRTOS RT-Thread

ISA 微架构 单片--》指令集架构的实现

微芯MicroChip RISC内核 指令长度不变

ARM ADVANCED RISC MACHINE CorTex-M系列处理器核的ISA、硬件描述语言(HDL)设计代码、物理版图、并基于他们制造MCU   STM32G0:Cotex-M0 STM32F4 : Cotex-M4 STM32H7:Cotex-M7
intel  MSC-51 8051   MSC-251(1996 SOP) 80251          STC32G                 
8051 8位宽度的MCU 8位算术逻辑单元 8位数据总线核8位寄存器 少量16位计算
MSC-51 ISA 111条 可变指令集长度 49条单字节指令 46条上字节指令 16条三字节指令 复杂指令集计算机典型代表 Complex Instruction Set Computer CISC 允许在存储器上执行算数核和逻辑运算
精简指令集计算机 Reduced Instruction Set Computer CISC 主要表现位指令长度固定、不支持在存储器上只能怪算数核逻辑运算,(必须在寄存器上完成)ARM Cortex-M

面向桌面的开发、面向工业控制领域的开发

早期Intel MSC-51 MCU 每个机器周期运行12个时钟周期,大多数指令在一个或两个机器周期内完成 时钟周期12Mhz

MCS-251 MCU 24位线性寻址能力,可寻址高达16MB存储空间 处理器进化 16K扩展寻址空间 MSC51 ISA扩展 MCS-251向下兼容MSC51

Binary mode51 comp   Source Mode251

嵌入式系统软件开发三个层次:直接在嵌入式硬件上开发软件应用--》借助于硬件厂家提供的API函数开发应用--》借助于嵌入式操作系统

===================================================================================
截图202309100900387971.jpg


从顶到底: 高级语言 汇编语言 机器指令 微指令
截图202309101044344377.jpg

keil C251.exe

单片机ing能评价例子  时钟周期减少、运行时间减少,指令条数减少




截图202309101053466533.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-10 16:19:06 | 显示全部楼层
《STC32位8051单片机原理及应用-STC32G12K128》2023/7/29



TSMC上海流片生产、南通富士通封装、2004 STC89C52RC 2014 STC15W4K58S4 2019 STC8H8K64U 2022 STC32K128 32位8051时代


keil μVision   STC-ISP  OTA  固化程序的方式:在系统编程(in system programming  ISP),在应用编程(in application progrmmming IAP )
ISP :串口 Flash存储器
IAP: Flash存储器映射为两个存储空间


STC32G12K128系列 超高速内核 流水线 编译链接后MSC-51 支持在线仿真/调试功能 硬件32位除法器(通过硬件电路实现、数字逻辑)FLASH程序存储器 128K 用户配置EEPROM512字节单页擦除,10万次
SRAM12K 4K edata 内部SRAM 8K内部扩展RAM(xdata)

时钟控制: 内部高精度IRC 内部PLL时钟电路
复位: 硬件复位 上电复位、复位脚复位、看门狗溢出复位、低压检测复位    软件复位
中断:支持49个中断源、4个中断优先级。处理外部事件能力越来越强 所有IO均支持中断、每组中断都分配独立的中断向量
数字外设:
5个16位定时器
2个高速同步/异步串口
2个高速异步串口,最快时钟源FOSC/4
2组高速PWM 8通道(4组互补对称)带死区的控制的PWM  电机驱动、电力电子 复杂
3组硬件SPI
1组I2C
CAN LIN
LCD驱动模块
DMA直接存储器访问,解决内部存储器和内部外设没有CPU干涉下不传数据,CPU性能损失,吞吐量提高
高速ADC
GPIO

CAN宣讲视频,CAN实战 To do
企业工程师的视频教程 官网 To do

G General F 硬件浮点处理单元 用硬件描述语言生成浮点计算电路
SRAM工艺总的存储容量大小
程序存储器(Flash工艺)总的存储容量
双列直插式封装、薄型四方扁平式贴片、薄的SOP、方形扁平无引脚封装
多路复用最基本规则
引脚驱动原理:四种驱动模式(数字电路数字逻辑),讲电路、讲硬件
准双向输入输出:第一个弱上拉晶体管、第二个极弱上拉晶体管、第三个强上拉晶体管
截图202309101533171119.jpg

强推挽输出:驱动能力比较强
截图202309101536547851.jpg

仅为输入(高阻)
截图202309101537537967.jpg

开漏输出:应用 不在一个供电电压 如5V供电单片机 1.8V外设,上拉1.8VVcc
截图202309101539034346.jpg

由于翻转门延迟存在,当软件由低变高指令,加入1~2个空擦欧总延迟指令,再读取外部状态

下载硬件电路:
截图202309101544099779.jpg


KEIL miuVersion5  C/C++编译器 宏汇编器 链接器/定位器 HEX文件生成器


截图202309101617379651.jpg


C251编译器和STC-ISP下载头文件,进入32位机的世界。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-11 09:03:46 | 显示全部楼层
《STC32位8051单片机原理及应用-STC32G12K128》2023/8/1



Keil uVision 应用程序开发
File Extesion books Environment: Target >>Source Group >> Files

内存模式 memory mode:
tiny: 所有变量驻留在MCS-251兼容单片机的内部数据存储器中,指针2字节    放在基本数据存储区、寄存器与内存直接相加
截图202309110701005015.jpg 截图202309110704279232.jpg 截图202309110706037137.jpg 截图202309110707507821.jpg


C251编译器优化选项
L251链接器、定位器   :“启动引导文件 ” C_STARTUP 0XFF0000 LJMP C:0X0A  LJMP MaiN 0XFF0003
HEX:Intel Hex文件格式 机器指令对应进去
截图202309110803393305.jpg 截图202309110804071084.jpg

Keil uVision 硬件在线仿真过程:

第四章 数值表示及转换
CPU由数据处理转变为任务调度





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-03-18 20:40:21

1

主题

75

回帖

345

积分

中级会员

积分
345
发表于 2023-9-11 12:24:34 | 显示全部楼层
《STC32位8051单片机原理及应用-STC32G12K128》-- 2023/8/4


1、8051 32位对8位的继承关系、巧妙的设计之处;2、32位 Kernel


除法运算,数学变换、转换成移位变换
十进制转换成二进制(十六进制)的算法 比较法、长除法
十进制小数转换为二进制数: 比较法生成定点数
负数表述方法:讲一个位作为符号位,用于区分整数和负数
截图202309111021533271.jpg 幅度表示法:16 = 0001 0000     -16 = 1001 0000 出现对0的二元理解、0点离散

截图202309111024395582.jpg 补码表示法:可拉开成坐标轴
+17 = 0001 0001   -17 = 1110 1111   补码电路  在有符号数中,正数的原码和补码相同   a-b  = a  + (-b)
截图202309111036547782.jpg char  a=170 有符号数处理,数据扩展处理
负小数处理:负小数补码计算, 使用浮点数,IEEE -754标准
截图202309111040597439.jpg


截图202309111107179231.jpg 大端模式、DR由WR组成


第五章!处理器内核和存储空寂那映射(最重要两章 第五章、第六章)!!!

先讲授8位,再讲授32位

CPU --》 控制器 双数据指针 内有外设数据总线,一个DPTR 增强型8051提供外部数据总线,所以出现两个16位的数据指针DPTR0 和DPTR1,公用一个地址空间,通过PSW的DPS来选择使用的DPTR
stack 堆栈 主要用于保存上下文(现场),典型,执行程序过程中遇到跳转指令,需要将当权PC指向的吓一跳指令的地址保存起来,等待执行完跳转指令时,再将所保存的下一条指令的地址恢复到程序地址寄存器
堆栈指着 SP 一个寄存器  开劈的区域 随着数据的入栈操作,SP递增,SP总是指向最新保存数据的存储器位置,SP总是指向栈顶的位置

对8051单片机复位后,默认将SP的内容初始化位0x07,所以,实际上堆栈从08H的地质单元开始,但由于地址范围0x08~0x1F是工作寄存器组的地址空间,因此,初始化代码人工设定0x80以上
运算器:8位运算逻辑单元,A累加器,B寄存器,程序状态字
程序状态字:PSW 内核的工作状态 CY[7] AC[6] F0[5] RS1[4] RS0 [3]OV[2] RSV[1] P[0]  需要扩展
SFR: CPU和外设之间的媒介、通道和桥梁!
截图202309111214504072.jpg 截图202309111216425139.jpg 依据单片机内部逻辑,通过SFR对外设进行访问和处理

扩展的特殊功能寄存器 eXtended SFR XSFR   创新:把没有用的SRAM(地址空间)用做SFR,机制巧妙  用指针形式访问和操作。
Intel出于紧凑型架构考虑,过去精力主要在应用上,要从顶而下的对底层了解

==========================================================================================
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-24 19:47 , Processed in 0.120778 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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