找回密码
 立即注册
楼主: I兔儿

公司需要学增强型8051单片机,8H

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-19 16:51:30 | 显示全部楼层
第二十课   SPI接口的结构

1.SPI接口的简介
2.SPI接口的结构图

SPI结构图

SPI结构图



单片机SPI接口的数据通信
1.SPI接口的信号
SPI接口由MISO、MOSI、SCLK和SS4根信号线构成。



2. SPI接口的数据通信方式
STC8H8K64U单片机的SPI接口的数据通信方式有3种:单主机-单从机方式、双器件方式(器件可互
为主机和从机)和单主机一多从机方式。


主机从机的选择

主机从机的选择

主机从机的选择



3.SPI接口的数据通信过程
在SPI通信中,数据传输总是由主机启动的。如果SPI使能(SPEN=1)并选择
作为主机时,主机对SPI数据寄存器SPDAT的写操作将启动SPI时钟发生器和数据
的传输。在数据写入SPDAT之后的半个到一个SPI位时间后,数据将出现在MOSI
引脚。写入主机SPDAT寄存器的数据从MOSI脚移出发送到从机的MOSI脚。同时
从机SPDAT寄存器的数据从MISO脚移出发送到主机的MISO脚。
传输完一个字节后,SPI时钟发生器停止,传输完成标志(SPIF)置位,如
果SPI中断使能则会产生一个SPI中断。主机和从机CPU的两个移位寄存器可以看
作是一个16位循环移位寄存器。当数据从主机移位传送到从机的同时,数据也以相
反的方向移入。这意味着在一个移位周期中,主机和从机的数据相互交换。



4.SPI中断
如果允许SPI中断,发生SPI中断时,CPU就会跳转到中断服务程序的入口地址
004BH处执行中断服务程序。注意,在中断服务程序中,必须把SPI中断请求标志清零。


5.写冲突
SPI在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能
将新的数据写入移位寄存器。当发送过程中对数据寄存器进行写操作时,WCOL位将置位
以指示数据冲突。在这种情况下,当前发送的数据继续发送,而新写入的数据将丢失。
接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以
进行下一个数据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数
据,否则,前一个接收数据将丢失。
WCOL可通过软件向其写入“1”清零
串口的TI RI是写0 清零的。


6.数据格式
SPI接口的时钟信号线SCLK有Idle和Active两种状态:Idle状态是指在不进行数据传
输的时候(或数据传输完成后)SCLK所处的状态;Active是与Idle相对的一种状态。
时钟相位位(CPHA)允许用户设置采样和改变数据的时钟边沿。时钟极性位CPOL允
许用户设置时钟极性。
如果CPOL=0,Idle状态=低电平,Active状态=高电平。
如果CPOL=1,Idle状态=高电平,Active状态=低电平。
主机总是在SCLK=Idle状态时,将下一位要发送的数据置于数据线MOSI上。
从Idle状态到Active状态的转变,称为SCLK前沿。
从Active状态到Idle状态的转变,称为SCLK后沿。
一对SCLK前沿和后沿构成一个SCLK时钟周期,一个SCLK时钟周期传输一位数据。
不同的CPHA,主机和从机对应的数据格式不同。





7.SPI时钟预分频器选择
SPI时钟预分频器选择是通过SPCTL寄存器中的SPR1-SPRO位实现的。











回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-21 11:57:14 | 显示全部楼层

第二十一课   SPI接口的通信


一 、STC8H8K64U单片机SPI接口的寄存器

SPI除中断寄存器

SPI除中断寄存器

1

1


5)位3:CPOL,SPI时钟极性选择位。
0:SPI空闲时SCK=0(低电平),SCK的前时钟沿为上升沿而后沿为下降沿;
1:SPI空闲时SCK=1(高电平),SCK的前时钟沿为下降沿而后沿为上升沿。
6)位2:CPHA,SPI时钟相位选择控制位。
0:数据SS管脚为低电平驱动第一位数据并在SCLK的后时钟沿改变数据,前时钟沿采样数据(必须SSIG=0);
1:数据在SCLK的前时钟沿驱动,后时钟沿采样。
7)位1:SPRI,与SPRO联合构成SPI时钟速率选择控制位。
8)位0:SPRO,与SPRI联合构成SPI时钟速率选择控制位。SPI时钟选择见表。

截图202504212044336197.jpg

二、STC8H8K64U单片机SPI接口的应用举例
截图202504212107251677.jpg
写1清零。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-22 00:19:20 | 显示全部楼层
第二十二课 I2C总线介绍一


一、I2C总线的相关概念
1、IC总线简介
I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的串行总线
2、IC总线的特点
3、I²C的术语


二、I2C总线的工作原理

(1)I2C是一种串行总线的外设接口,采用同步方式串行接收或发送信息,
两个设备在同一个时钟下工作。
(2)I2C总线只用两根线:
串行数据SDA(Serial Data)、串行时钟SCL(Serial Clock)。
由于I2C只有一根数据线,因此其发送信息和接收信息不能同时进行。信息
的发送和接收只能分时进行。
(3)I2C总线上的所有器件的SDA线并接在一起,所有器件的SCL线并接在
一起,且SDA线和SCL线必须通过上拉电阻连接到正电源。当总线空闲时,两条
线都是高电平。
(4)I2C总线的数据传输协议比SPI总线复杂,因为I2C总线器件没有片选控
制线,所以I2C总线数据传输的开始必须由主器件产生通信的开始条件(START
条件);通信结束时,由主器件产生通信的停止条件(STOP条件)。
当SCL为高时,使用SDA的变化标识开始条件和停止条件。
如果SDA由1变到O,则产生START条件;
如果SDA由O变到1,则产生STOP条件。
(5)I2C总线上的每个器件都有唯一的地址。在信息的传输过程中,I2C总
线上并接的每个器件既是主器件(或发送器),又是从器件(或接收器),这取
决于它所要完成的功能。主器件发出的信息分为地址码和数据两部分,地址码用
来选址,即接通将要通信的从器件,数据是主器件要传输给从器件的具体信息。

如果主机发出带有R//W位为1的从机地址,当从机使用ACK响应时,从机就
变为一个主机发送者。然后,从机向主机提供数据,但每次在第9个时钟脉冲时
,释放SDA线并采样由主机提供的确认位。



主机产生了8个SCL脉冲后,把SDA输出置高电平,并产生第9个时钟脉冲。
如果被寻址的从机作出响应,从机将把SDA线拉成低电平,这表示一个确认位(
ACK)。如果被寻址的从机保持SDA线为高电平,主机就为认为从机没有确认(
NACK)本次数据传输。一旦被寻址的从机产生了NACK信号而不是正常的ACK
信号,多字节数据传输过程就会被中止


典型情况下,如果主机希望收到更多的数据,就会产生ACK信号;如果是最
后一个字节,则产生NACK信号以通知从机
三、I2C总线的基本操作

I2C规程运用主/从双向通信。器件发送数据到总线上,则定义为
发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作
于接收和发送状态。
总线必须由主器件(通常为微控制器)控制,主器件产生串行时
钟(SCL)控制总线的传输方向,并产生起始和停止条件。


(1)控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不
同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为器件地址,
最后一位为读写位,当为1时为读操作,为0时为写操作。



(2)写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节
不同有所不同。
1字节写指令
·首先发送开始位来通知芯片开始进行指令传输
·然后传送设置好的器件地址字节,R/W位应置0
·接着是分开传送十六位地址的高低字节,再传送要写入的数据
·最后发送停止位表示本次指令结束
每次只能向芯片中的一个地址写入一个字节的数据。

截图202504220927467099.jpg

2)页面写模式
·需要发送第一个字节的地址
·然后一次性发送多个字节的写入数据后
.再发送停止位。
·写入过程中其余的地址增量自己由芯片内部完成。

注意
无论那种写入方式,指令发送完成后,芯片内部开始写入,这时SDA会被
芯片拉高,直到写入完成后SDA才会重新变的有效,在编写用户程序时可以
在写入的时候不停发送伪指令并查询是否有ACK返回,如果有ACK返回则可
以进行下一步操作。



(3)读操作
读操作有三种基本操作:读当前地址、读任意地址和连续读取。
1)读当前地址
·这种读取模式是读取当前芯片内部的地址指针指向的数据。
·每次读写操作后,芯片会把最后一次操作过的地址作为当前的地址。
注意:在CPU接收完芯片传送的数据后不必发送低电平的ACK给芯片,直接
拉高SDA等待一个时钟后发送停止位.


2)读任意地址

3)连续读取
连续读取操作时只要在上面二种读取方式中芯片传送完读取数据后,CPU回
应给芯片一个低电平的ACK应答,那么芯片地址指针自动加一并传送数据,直到
CPU不回应(NOACK)并停正操作。

















回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-22 11:02:35 | 显示全部楼层
第二十三课 I2C总线介绍二

STC8H8K64U单片机I2C接口的简介


STC8H8K64U单片机I2C接口的寄存器

I2C相关寄存器

I2C相关寄存器


1、I2C主机模式
  (1)
I2C配置寄存器(I2CCFG)
(2)I2C主机控制寄存器(I2CMSCR)

1010:发送数据命令+接收ACK命令。
此命令为命令0010、命令0011两个命令的组合,下此命令后控制器会依次执行这两个
命令。
1011:接收数据命令+发送ACK(0)命令。
此命令为命令0100、命令0101两个命令的组合,下此命令后控制器会依次执行这两个
命令。注意:此命令所返回的应答信号固定为ACK(0),不受MSACKO位的影响。
1100:接收数据命令+发送NAK(1)命令。
此命令为命令0100、命令0101两个命令的组合,下此命令后控制器会依次执行这两个
命令。注意:此命令所返回的应答信号固定为NAK(1),不受MSACKO位的影响。
(3)I2C主机辅助控制寄存器(I2CMSAUX)
(4)I2C主机状态寄存器(I2CMSST)


2、I2C从机模式
(1)I2C从机控制寄存器(I2CSLCR)
(2)I2C从机状态寄存器(I2CSLST)
(3)I2C从机地址寄存器(I2CSLADR)
(4)I2C数据寄存器(I2CTXD,I2CRXD)

STC8H8K64U单片机I2C接口的应用

I2C接口的使用包括I2C接口的初始化和I2C中断服务程序的编写。
主机模式的I2C接口的初始化包括以下几个方面:
①设置与I2C接口有关的I/0口线工作模式。
②选择I2C引脚,使能I2C主机模式并设置速度(I2CCFG)。
③清0相关标志位(I2CMSST)。
④如果需要,开放I2C中断(I2CMSCR中的EMSI=1)。
③开放总中断(IE中的EA=1)。
I2C中断服务程序根据实际需要进行编写。唯一需要注意的是,在中断服务程序中需
要将标志位MSIF清零。





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-22 12:05:15 | 显示全部楼层
第二十四课  ADC的结构以及寄存器

一、具有模拟量输入输出的单片机系统构成

传感器和变送器的区别
在自动化系统中经常把检测仪表称为变送器



二、模数转换器的工作原理及性能指标

一、模数转换器的工作原理
根据转换的工作原理不同,模数转换器可以分为计数-比较式、
逐次逼近式和双斜率积分式。
计数-比较式模数转换器结构简单,价格便宜,转换速度慢,较
少采用。
下面主要介绍逐次逼近式模数转换器的工作原理。

二、模数转换器的性能指标
A/D转换器是实现单片机数据采集的常用外围器件。A/D转
换器的品种繁多,性能各异,在设计数据采集系统时,首先碰到
的问题就是如何选择合适的A/D转换器以满足系统设计的要求。
选择A/D转换器需要综合考虑多项因素,如系统技术指标、
成本、功耗、安装等。
1、分辨率
2、通道
3、基准电压
4、转换速率
5、采样/保持器
6、量程
7、满刻度误差
8、线性度
9、数字接口方式
10、模拟信号类型
11、电源电压

2、功耗
一般CMOS工艺的芯片功耗较低,对于电池供电的手持系统对
的场合一定要注意功耗指标。
13、封装
常见的封装有双列 直插封装(DIP)和表贴型型(SMD)封装。

三、STC8H8K64U单片机ADC的结构及寄存器
截图202504230003342391.jpg
CVTIMESEL[2:0]可以转换多少次求平均。
2、与ADC有关的特殊功能寄存器
(1)ADC控制寄存器ADC_CONTR
符号                         地址            b7                             b6                    b5                                    b4                      b3      b2      b1      b0
ADC_CONTR         BCH     ADC_POWER      ADC_START         ADC_FLAG                           ADC_EPWMT         ADC_CHS[3:0]
ADC_POWER:ADC电源控制位
0:关闭ADC电源
1:打开ADC电源。
建议进入空闲模式和掉电模式前将ADC电源关闭,以降低功耗。
特别注意:
给MCU的内部ADC模块电源打开后,需等待约1ms,等MCU内部的ADC
电源稳定后再让ADC工作。


2、与ADC有关的特殊功能寄存器
(1)
ADC控制寄存器ADCCONTR

截图202504230015356842.jpg
ADC_START:ADC转换启动控制位。
写入1后开始ADC转换,转换完成后硬件自动将此位清零。
0:无影响。即使ADC已经开始转换工作,写O也不会停止A/D转换。
1:开始ADC转换,转换完成后硬件自动将此位清零。
ADC_FLAG:ADC转换结束标志位。
当ADC完成一次转换后,硬件会自动将此位置1,并向CPU提出中断请求。
此标志位必须软件清零。

ADC_EPWMT:使能PWM实时触发ADC功能。
ADC_CHS[3:0]:ADC模拟通道选择位
注意:被选择为ADC输入通道的I/O口,必须设置PxM0/PxM1寄存器将I/O
口模式设置为高阻输入模式。
另外,如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道,则
需要设置PxIE寄存器关闭数字输入通道,以防止外部模拟输入信号忽高忽低而产
生额外的功耗。(高祖输入同时关闭数字通道)

(3)ADC转换结果寄存器
(ADC_RES,ADC RESL)

当A/D转换完成后,12位的转换结果会自动保存到ADC_RES和
ADC_RESL中。保存结果的数据格式请参考ADC_CFG寄存器中的
RESFMT设置。


(4)ADC时序控制寄存器(ADCTIM)

CSSETUP:ADC通道选择时间控制TSetup(ADC通道切换时间)
0:占用1个ADC工作时钟(默认值)
1:占用2个ADC工作时钟
截图202504231049466924.jpg

(5)ADC扩展配置寄存器(ADCEXCFG

ADCETRS[1:0]:ADC外部触发脚ADC_ETR控制位
Ox:禁止ETR功能
10:使能ADC_ETR的上升沿触发ADC
11:使能ADC_ETR的下降沿触发ADC
注:使用此功能前,必须打开ADC_CONTR中的ADC电源开关,并设置
好相应的ADC通道






回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-23 11:43:46 | 显示全部楼层
第二十五课    ADC的应用

STC8H8K64U单片机ADC的应用
截图202504231144227036.jpg
截图202504231144456320.jpg

截图202504231142237536.jpg
二、ADC的应用
1、编程步骤

截图202504231146353623.jpg
2.实例
截图202504231148551639.jpg



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-23 15:54:48 | 显示全部楼层
第二十六课   PWM介绍

PWM概述
脉冲宽度调制(PWM)是利用微处理器的数字输出对模拟电路进行控制的一
种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域中。
通过使用高分辨率计数器,输出方波的占空比被调制,用来对一个具体模拟
信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅
值的直流供电要么完全有,要么完全无。

1.PWM应用场景之一
脉冲宽度调制(PWM)可以用来控制舵机的转角。
2.控制电机









回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 2025-4-23 15:57:32 | 显示全部楼层
第二十七课   STC8H8K64U单片机的PWM模块介绍

一、STC8H8K64U单片机的PWM模块简介

1、STC8H8K64U单片机的PWM模块概述
STC8H8K64U单片机内部集成了8通道16位高级PWM定时器,可对外输出
任意频率以及任意占空比的PWM波形,分成两组,分别命名为第一组PWM(称
为PWMA)和第二组PWM(称为PWMB),它们的周期可分别单独设置(可以
不同)。PWMA可配置成4组带死区控制的互补对称PWM或捕捉外部信号,
PWMB可配置成4路PWM输出或捕捉外部信号。



STC8H8K64U单片机的PWM能捕获外部输入信号,可捕获上升沿、下降沿
或者同时捕获上升沿和下降沿,测量外部波形时,可同时测量波形的周期值和占
空比值。有正交编码功能、外部异常检测功能以及实时触发ADC转换功能。


两组PWM定时器唯一的区别是第一组可输出带死区的互补对称PWM,而第
二组只能输出单端的PWM,其他功能完全相同。


2、STC8H8K64U单片机PWM模块的功能
(1)PWM波形的输出
当使用第一组PWM定时器输出PWM波形时,可单独使能
PWM1P/PWM2P/PWM3P/PWM4P输出(称为P端输出),也可单独使能
PWM1N/PWM2N/PWM3N/PWM4N输出(称为N端输出)。可选择的输出规则
如下:


1)P端输出和对应的N端输出不能同时独立输出。例如,若单独使能了
PWM1P输出,则PWM1N就不能再独立输出,除非PWM1P和PWM1N组成一组
互补对称输出


2)PWMA的4路输出是可分别独立设置的,例如:可单独使能PWM1P和
PWM2N输出,也可单独使能PWM2N和PWM3N输出。



(2)捕获功能或者脉宽测量
若需要使用第一组PWM定时器进行捕获功能或者测量脉宽时,输入信号只
能从每路的正端输入,即只有PWM1P/PWM2P/PWM3P/PWM4P才有捕获功能
和测量脉宽功能。



两组高级PWM定时器对外部信号进行捕获时,可选择上升沿捕获或者下降
沿捕获。如果需要同时捕获上升沿和下降沿,则可将输入信号同时接入到两路
PWM,使能其中一路捕获上升沿,另外一路捕获下降沿。将外部输入信号同时
接入到两路PWM时,可同时捕获信号的周期值和占空比值。



(3)、STC8H8K64U单片机PWM模块的性能
(1)16位向上、向下、向上/下自动装载计数器。
(2)允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器。
(3)16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数
为1~65535之间的任意数值。
(4)同步电路,用于使用外部信号控制定时器以及定时器互联。
(5)多达4个独立通道可以配置成:
・输入捕获
·输出比较
·PWM输出(边缘或中间对齐模式)

·6步PWM输出  (特别适合马达控制)

·单脉冲模式输出
·PWMA支持4个死区时间可编程的通道上互补输出
(6)刹车输入信号(PWMFLT)可以将定时器输出信号置于复位状态或者
C
一个确定状态。
(7)外部触发输入引I脚(PWMETI)。
(8)PWMA/PWMB各有8个中断请求源:
·刹车中断(刹车信号输入)
·触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
·COM事件中断
·输入捕捉/输出比较1~4中断
·更新事件中断:计数器向上溢出/向下溢出或计数器初始化(通过软件
或者内部外部触发)



二、STC8H8K64U单片机PWM模块的时基单元
截图202504231723382545.jpg

PWMA的时基单元包含:
16位向上/向下计数器
16位自动重载寄存器
重复计数器
预分频器



自动重载寄存器由预装载寄存器和影子寄存器组成。
可在下面两种模式下写自动重载寄存器:
(1)自动预装载已使能(PWMA_CR1寄存器的ARPE位为1)。在此模
式下,写入自动重载寄存器的数据将被保存在预装载寄存器中,并在下一个更
新事件(UEV)时传送到影子寄存器。
(2)自动预装载已禁止(PWMA_CR1寄存器的ARPE位为0)。在此模
式下,写入自动重载寄存器的数据将立即写入影子寄存器。


产生更新时间的条件:

(1)计数器向上或向下溢出。
(2)软件置位了PWMA_EGR寄存器的UG位。
(3)时钟/触发控制器产生了触发事件。


2.16位计数器的读写操作
写计数器的操作没有缓存,在任何时候都可以写PWMA_CNTRH和
PWMA_CNTRL寄存器,因此为避免写入了错误的数值,一般建议不要在计数
器运行时写入新的数值。
读计数器的操作带有8位的缓存。用户必须先读定时器的高字节,在用户
读了高字节后,低字节将被自动缓存,缓存的数据将会一直保持直到16位数据
的读操作完成。



3.16位自动装载寄存器PWMA_ARR寄存器的写操作
预装载寄存器中的值将写入16位的PWMA_ARR寄存器中,此操作由两条
指令完成,每条指令写入1个字节。必须先写高字节,后写低字节。
影子寄存器在写入高字节时被锁定,并保持到低字节写完。

截图202504231737194863.jpg



三、STC8H8K64U单片机PWMA模块的计数模式




1.向上计数模式
在向上计数模式中,计数器从O计数到用户定义的比较值(PWMA_ARR寄
存器的值),然后重新从0开始计数并产生一个计数器溢出事件(上溢),此时
如果PWMA_CR1寄存器的UDIS位是O,将会产生一个更新事件(UEV)。


2.向下计数模式
在向下模式中,计数器从自动装载的值(PWMA_ARR寄存器的值)开始向
下计数到0,然后再从自动装载的值重新开始计数,并产生一个计数器向下溢出
事件(下溢)。如果PWMA_CR1寄存器的UDIS位被清除,还会产生一个更新事
件(UEV)。



3.中间对齐模式(向上/向下计数模式)
在中央对齐模式,计数器从O开始计数到PWMA_ARR寄存器-1,产生一个计
数器上溢事件,然后从PWMA_ARR寄存器的值向下计数到1并且产生一个计数
器下溢事件;然后再从0开始重新计数。在此模式下,不能写入PWMA_CR1中的
DIR方向位。它由硬件更新并指示当前的计数方向。


使用中央对齐模式应该注意:
(1)启动中央对齐模式时,计数器将按照原有的向上/向下的配置计数。也就
是说PWMA_CR1寄存器中的DIR位将决定计数器是向上还是向下计数。此外,软件
不能同时修改DIR位和CMS位的值。
(2)不推荐在中央对齐模式下,计数器正在计数时写计数器的值,这将导致不
能预料的后果。
(3)安全使用中央对齐模式的计数器的方法是在启动计数器之前先用软件(置
位PWMA_EGR寄存器的UG位)产生一个更新事件,并且不在计数器计数时修改计
数器的值。


4. 重复计数器
时基单元解释了计数器向上/向下溢出时更新事件(UEV)是如何产生的,
然而事实上它只能在重复计数器的值达到0的时候产生。这个特性对产生PWM信
号非常有用。
这意味着在每N次计数上溢或下溢时,数据从预装载寄存器传输到影子寄存
器(PWMA_ARR自动重载入寄存器,PWMA_PSCR预装载寄存器,还有在比较
模式下的捕获/比较寄存器PWMA_CCRx),N是PWMA_RCR重复计数寄存器中
的值。





回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 7 天前 | 显示全部楼层
第二十八课   补充PWM控制电机(梁工补充)

截图202504240918022429.jpg

截图202504240921291590.jpg
电机驱动的内容实在是太多  带霍尔和不带霍尔传感器。说实在没听懂需要狠狠的补课。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-04-25 19:41:38
已绑定手机

3

主题

33

回帖

187

积分

注册会员

积分
187
发表于 7 天前 | 显示全部楼层
第二十九集 PWM预分频时钟源、捕获/比较通道

一、预分频时钟(CK_PSC)的时钟源
截图202504241530558784.jpg

时基单元的预分频时钟(CK_PSC)可以由以下资源提供:
(1)内部时钟(CK_INT)
(2)外部时钟模式1:外部时钟输入(TIx)
(3)外部时钟模式2:外部触发输入ETR
(4)内部触发输入(ITRx):使用一个PWM的TRGO做为另一个PWM的
预分频时钟。
截图202504241538302774.jpg



2、外部时钟源模式1
当PWMA_SMCR寄存器的SMS=111时,选择外部时钟源模式。通过
PWMA_SMCR寄存器的TS位选择TRGI的信号源。计数器可以在选定输入端的
每个上升沿或下降沿计数。




要配置向上计数器在TI2输入端的上升沿计数,使用下列步骤:
(1)配置PWMA_CCMR2寄存器的CC2S=01,通道2输入选择TI2;
(2)配置PWMA_CCMR2寄存器的IC2F[3:0]位,选择输入滤波器带宽;
(3)配置PWMA_CCER1寄存器的CC2P=0,选定上升沿极性;
(4)配置PWMA_SMCR寄存器的SMS=111,配置计数器使用外部时钟模式
(5)配置PWMA_SMCR寄存器的TS=110,选定TI2作为输入源;
(6)设置PWMA_CR1寄存器的CEN=1,启动计数器。

截图202504241546562106.jpg

3、外部时钟源模式2
计数器能够在外部触发输入ETR信号的每一个上升沿或下降沿计数。将
PWMA_ETR寄存器的ECE位写1,即可选定此模式。(PWMA_SMCR寄存器的
SMS=111且PWMA_SMCR寄存器的TS=111时,也可选择此模式



例如,要配置计数器在ETR信号的每2个上升沿时向上计数一次,需使用下列步骤:
(1)本例中不需要滤波器,配置PWMA_ETR寄存器的ETF[3:0]=0000;

(2)设置预分频器,配置PWMA_ETR寄存器的ETPS[1:0]=01(频率/2);
(3)选择ETR的上升沿检测,配置PWMA_ETR寄存器的ETP=0;
(4)开启外部时钟模式2,配置PWMA_ETR寄存器中的ECE=1;
(5)启动计数器,写PWMA_CR1寄存器的CEN=1;



二、捕获/比较通道  

PWM1P、PWM2P、PWM3P、PWM4P可以用作输入捕获;
PWM1P/PWM1N、PWM2P/PWM2N、PWM3P/PWM3N、PWM4P/PWM4N
可以输出比较。
b
上述功能可以通过配置捕获/比较通道模式寄存器(PWMA_CCMRi)的CCiS
通道选择位来实现(其中,i=1,2,3,4)。

截图202504241553272497.jpg


截图202504241556089655.jpg

截图202504241556321069.jpg
截图202504241557299345.jpg

(2)输入捕获模式的工作过程
在输入捕获模式下,当检测到ICi信号上相应的边沿后,计数器的当前
值被锁存到捕获/比较寄存器(PWMA_CCRx)中。
当发生捕获事件时,PWMA_SR寄存器中的相应CCiIF标志被置1。
如果PWMA_IER寄存器的CCiIE位被置位,也就是使能了中断,则将
产生中断请求。
如果发生捕获事件时CCiIF标志已经为高,那么PWMA_SR2寄存器中
的重复捕获标志CCiOF被置1。写CCiIF=0或读取存储在PWMA_CCRiL寄
存器中的捕获数据都可清除CCiIF。写CCiOF=0可清除CCiOF。



1).实现PWM输入信号上升沿时捕获的设置
例如,在TI1输入的上升沿时捕获计数器的值到PWMA_CCR1寄存器
中。设置步骤:
①选择有效输入端,设置PWMA_CCMR1寄存器中的CC1S=01,此时通道1被配置
为输入,并且PWMA_CCR1寄存器变为只读。
②根据输入信号TI1的特点,可通过配置PWMA_CCMR1寄存器中的IC1F位来设置
相应的输入滤波器的滤波时间。假设输入信号在最多5个时钟周期的时间内抖动,须配置
滤波器的带宽长于5个时钟周期,因此,可以连续采样8次,以确认在TI1上一次真实的边
沿变换,即在PWMA_CCMR1寄存器中写入IC1F=0011,此时,只有连续采样到8个相同
的TI1信号,信号才为有效(采样频率为fMASTER)。


③选择TI1通道的有效转换边沿,在PWMA_CCER1寄存器中写入
CC1P=0(上升沿)。
④配置输入预分频器。在本例中,希望捕获发生在每一个有效的电平
转换时刻,因此,预分频器被禁止(写PWMA_CCMR1寄存器的
IC1PS=00)。
⑤设置PWMA_CCER1寄存器的CC1E=1,允许捕获计数器的值到捕
获寄存器中。
如果需要,通过设置PWMA_IER寄存器中的CC1IE位允许相关中断
请求。



2)PWM输入信号测量
该模式是输入捕获模式的一个特例,除下列区别外,操作与输入捕获
模式相同:
·两个ICi信号被映射至同一个TIi输入。
·这两个ICi信号的有效边沿的极性相反。
·其中一个TIiFP信号被作为触发输入信号,而触发模式控制器被配置
成复位触发模式。


截图202504241603022140.jpg
截图202504241603369637.jpg

(2)强制输出模式
在输出模式下,输出比较信号能够直接由软件强制为高或低状态,而
不依赖于输出比较寄存器和计数器间的比较结果。
置PWMA_CCMRi寄存器的OCiM=101,可强制OCiREF信号为高。
置PWMA_CCMRi寄存器的OCiM=100,可强制OCiREF信号为低。




(3)输出比较模式
此模式用来控制一个输出波形或者指示一段给定的时间已经达到。
当计数器与捕获/比较寄存器的内容相匹配时,有如下操作:
①根据不同的输出比较模式,相应的OCi输出信号:
·OCiM=000时,保持不变
·OCiM=001时,设置为有效电平
·OCiM=010时,设置为无效电平
·OCiM=011时,翻转
②设置中断状态寄存器中的标志位(PWMA_SR1寄存器中的CCiIF位)。
③若设置了相应的中断使能位(PWMA_IER寄存器中的CCiIE位),则产生
一个中断。


输出比较模式的配置步骤:
①选择计数器时钟(内部、外部或者预分频器)。
②将相应的数据写入PWMA_ARR和PWMA_CCRi寄存器中。
③如果要产生一个中断请求,设置CCiIE位。
④选择输出模式,步骤如下:
·设置OCiM=011,在计数器与CCRi匹配时翻转OCiM管脚的输出。
·设置OCiPE=0,禁用预装载寄存器。
·设置CCiP=0,选择高电平为有效电平。
·置CCiE=1,使能输出。
⑤设置PWMA_CR1寄存器的CEN位启动计数器。


(4)PWM模式
脉冲宽度调制(PWM)模式可以产生一个由PWMA_ARR寄存器确定频率,
由PWMA_CCRi寄存器确定占空比的信号。
在PWMA_CCMRi寄存器中的OCiM位写入110(PWM模式1)或111(PWM
模式2),能够独立地设置每个OCi输出通道产生一路PWM。必须设置
PWMA_CCMRi寄存器的OCiPE位使能相应的预装载寄存器,也可以设置
PWMA_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数模式
或中央对称模式中)。

1.向上计数
2.向下计数
3.中央对齐模式























截图202504241529237018.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 22:11 , Processed in 0.120633 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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