gentleman
发表于 2023-9-3 11:58:19
2023/08/23 第十八集
STC8H8K64U
4个串口全双工 支持DMA
两个SBUF独立
SFR
SCON
常用模式1 3
工作模式1示意图
可以由定时器作为波特率发生器
gentleman
发表于 2023-9-3 12:09:11
2023/08/28 第十九集
使用定时器作为波特率发生器时要 TR1/TR2=1
中断不用开
常用stc-isp 工具计算定时器初值
实时任务需要 中断
编程要点
SCON 设置
TMOD/SMOD 设置
ES/EA 设置
data -> SBUF
清TR/RI 编程序
其他串口类似,注意寄存器不同
流程图
发送
接收
注意波特率要相同,才能进行通信
多机通信
SM2 标志位区分
流程图
注意TB8=1 发地址
发完清TB8
gentleman
发表于 2023-9-4 08:54:56
留一层,备用
gentleman
发表于 2023-9-4 09:10:56
本帖最后由 gentleman 于 2023-9-11 10:42 编辑
2023/08/30第二十集
SPI 结构
常用于 存储器 a/dd/a ledlcd通信
分主从
SPDAT 相当于串口的SBUF
从机不能主动发送时钟
时钟由主机系统时钟分频形成
SPR0 SPR1 控制
SPEN 控制开关
SSIG 是否忽略ss
CPHA/CPOL 相位/极性
SPIF/WCOL状态
主从选择
注意WCOL 写1清0 可能是飞利浦搞错啦,还不承认
时序图
CPOL 决定 高/低电平空闲还是激活状态
CPHA前后沿
具体的看图,时序图描述的很清晰
gentleman
发表于 2023-9-4 09:25:30
本帖最后由 gentleman 于 2023-9-11 10:42 编辑
2023/08/30 第二十一集
硬件spi就这几个寄存器
SPCTL
.7 SSIG1忽略ss
.6 SPEN1使能
.5 DORD 1先传低位
.4 MSTR主从选择结合SSIG
.3 CPOL 1 SCK=1空闲 前沿下降沿
0 SCK=0空闲 上升沿
.2 CPHA,时钟选择
.1.0联合控制时钟速率
SPSTAT
SPIF/WOCL标志位写1清理0
SPDAT
数据
后面的例子是个驱动LCD 屏幕的
注意这是个慢速设备
时序图
大家课后可以尝试一下 试验箱的SPI FLASH 的驱动 和 oled12864 的驱动
可能实用性更大一些,当然LCD 屏幕由于屏幕较大,也有许多适合使用的场景.
我在论坛也写了一篇关于spi 驱动oled 屏幕的文章
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4022
gentleman
发表于 2023-9-11 11:01:46
2023/09/04 第二十二集
I2C简单 有效
时序很重要
有主从机
可多主机
仲裁/同步
I2C 工作原理
同一时钟
两个线 sdascl (其实还有GND)
sda scl 要上拉
开漏模式
时序
每个器件唯一地址
写指令
字节写
注意R/#WD 位置在地址后 应答前
页面写
发首地址,写多个
再停止
gentleman
发表于 2023-9-11 11:21:05
2023/09/04 第二十三集
STC8H 的i2c寄存器
比spi 要多一点
ENI2C 关闭可以复位
建立时间与保持时间/速度 通过MSSPEED 设置
课上讲的例程是使用24c02的存储器
程序要点
设计程序时可以在头部宏定义 地址,方便以后修改
使用sbit 定义一些 引脚,虽然没用,但便于阅读。(曾经有个小白,改了这里的引脚定义,发现并没用,当时还困扰了好久)
配置好相关寄存器
start -设备地址 W- 存储器地址- 数据-停止命令
start -设备地址 W- 存储器地址- start - 设备地址R- 读数据发ACK-停止命令
gentleman
发表于 2023-9-11 11:21:06
2023/09/04 第二十三集
STC8H 的i2c寄存器
比spi 要多一点
ENI2C 关闭可以复位
建立时间与保持时间/速度 通过MSSPEED 设置
课上讲的例程是使用24c02的存储器
程序要点
设计程序时可以在头部宏定义 地址,方便以后修改
使用sbit 定义一些 引脚,虽然没用,但便于阅读。(曾经有个小白,改了这里的引脚定义,发现并没用,当时还困扰了好久)
配置好相关寄存器
start -设备地址 W- 存储器地址- 数据-停止命令
start -设备地址 W- 存储器地址- start - 设备地址R- 读数据发ACK-停止命令
gentleman
发表于 2023-9-17 08:16:33
2023/09/06 第二十四集
模拟量转数字量
逐次逼近
原理类似杆秤
分辨率 8位 5V19.5mv
810121416常见位数
stc15通道 1个公共adc
存在转换时间 采样保持时间
内部结构
寄存器ADC_CONTRADCCFG
记得设置io高阻模式
ADC_RES,ADC_RESL放高低位数据
ADCTIM 时序控制
ADCEXCFG转换次数
gentleman
发表于 2023-9-17 08:28:27
2023/09/07 第二十五集
计算公式
转换公式 4096 xvin/vref
还可以反推输入电压
编程步骤
实例是ntc测温
ADC_CONTR &=~0x20;
这条语句可以思考一下
好用的清0写法
ADCRES要强制转换u16
得到结果查表
后面讲了下硬件调试, 很直观,很好用。
另一个应用 ad按键
节省io
两组可以实现按键同时按下。