image-5

probe-rs 安装与配置及问题解决

大概步骤按 probe-rs 官网的教程走即可。 前提:在wsl2 中使用usb 需要通过 usbipd-win 这个工具,需要先确保这个工具能正常连通,在linux 中能看到对应的usb文件 wsl 中安装 probe-rs , 有多种方法,我是通过 cargo binstall probe-rs-tools 安装的,如果没有binstall 先通过 cargo install cargo-binstall 安装 vscode 安装 probe-rs 插件 ,并配置 调试启动 文件 注意chip、 formatOptions 和programBinary 的配置 启动调试时可能提示如下错误: Read More

image-5

驱动夏普1.26寸 memory lcd

买了几块 夏普的1.26寸 memory lcd 型号为 LS013B7DH07,这种屏幕显示有点像墨水屏,只是白色不是那纯有点偏银灰的感觉,比普通墨水屏刷新快很多,在不刷新的情况下墨水屏显示更好,需要频繁刷新的情况下memory lcd 是更好的选择。 这个屏的驱动方式与常见的一根cd命令数据线来控制传输命令或数据的方式不同,它是在cs拉高后开始的前几个固定时钟周期内为命令,命令后再跟着传数据。常用的两个就是清屏与整屏刷新,下面就引脚定义与这两个操作记录一下。 引脚如上图, vdda 、vdd 接3.3v, vss、vssa 接地,sclk 时钟信号、si 即 mosi 串口数据,scs 为 Read More

image-5

软件培训机构能进吗?

前段时间知乎上有一人提问:17岁男孩喜欢编程,要不要去培训机构学习python? 我随即写下了下面这段话,我感觉这也是我从进入培训到如今的感悟,我是受益者,但受益者可能只有3-4成左右,还有的6-7成可能是浪费了时间也浪费了金钱。时间比钱更重要,人生这趟回不了头的旅行,你上错了车再转车真是太难了。 我一般不回答问题,我自认为自己能力有限,高人的回答比我的废话要更有价值,但这个问题我深有体会,所以我说一下希望对你有点帮助。既然说了深有体会,就是说我就是培训出来的,而且培训出来的人很多很多,我每次换工作都能碰到。关于歧视问题,这个是很好理解的,你培训出来的当然是不能跟全日制本科学生比较,人家幸幸苦 Read More

image-5

lcd 屏幕驱动过程

屏幕驱动一般分为串口与并口两种通信类型,并口驱动需要的io口更动,一般小屏的并口屏会占用8个io口,即能同时传输一个字节的8位数据,串口通信需要的io口更少,串口是通过输入输出信号与时钟信号配合通过时序得到具体的通信数据。spi通信协议一般需要cs、sclk、miso、mosi,而在屏幕上一般不需要miso即不需要从设备到主机的输入。 学习屏幕的驱动必须要先了解屏幕的驱动ic,小屏的驱动ic大多是内置在屏内的,不同的驱动ic需要使用不同的驱动程序驱动,一般不能共用程序,不同的ic的命令表是不同的,屏幕的驱动就是通过命令表中的命令控制像素的显示,所以驱动屏幕的程序主要是看ic对应的命令表。 点亮 Read More

image-5

pwm 播放音频

声音使用pwm 模拟 dac 输出 ,pwm的原理就是在高频率下按点空比翻转电平以达到类似线性模拟信号的目的,翻转的频率由时钟源最高频率与设置的分辨率值决定,大概是时针频率/ (2的分辨率次方) ,可能还有取模的步骤,分辨率就是一个周期内能控制的细腻程度,因为这种细粒度的控制其实现是需要时钟脉冲的,所以分辨率越高pwm的频率就只能越低,分辨率为1位时,pwm频率为最高时钟频率的一半。 使用pwm 输出音频一般是对音质没什么要求的场景,硬件资源可能也有限,可以选择 8bit 的采样深度,8khz的采样率,这样音频数据会比较小, 内容也能正常听清,pwm 的分辨率设置为8bit ,频率按时钟源来计 Read More

image-5

esp32c3 hal 架构笔记

构建过程 大量的构建过程都在各个库中的 build.rs 中实现,主要是通过不同的构建目录将预定点的链接文件复制到输出目录中,并通过 cargo:rustc-link-search= 指令将对应的目录加入到链接脚本的查询目录中,最后在构建是 通过 link-arg= 加上指定的入口链接脚本 构建完成的目标文件. 链接脚本的主要作用就是指定程序在内存中的布局 rust 代码入口在 esp-riscv-rt 库中的 lib.rs 中,通过一段内嵌宏实现的入口点,在引导程序bootloader执行完成后会跳转到 _start 入口处。在进入main方法前的代码需要结合 链接脚本中的符号定义进行分析。 Read More

image-5

pwm 信号控制

主要参数 : PWM 通道号 PWM 频率,单位 Hz PWM 分辨率 PWM 占空比 一般由前三个参数是固定值,通过调整空占比进行控制,下面解释一下这几个参数之间的关系 通道号不用说,就是选择的通道。 由频率可以得出单个脉冲周期的时间长度,比如一个sg90的舵机一般控制频率为 50HZ, 1s / 50次 * 1000 ms = 20ms ,即一个周期时长为20ms。 得出一个周期后通过分辨率将一个周期切分指定数量的等份,分辨率决定了可调控的最小时间单元。 拿舵机举例就是分辨率过小则可控制的角度的精度越粗,假如只需要0.011ms的高电平就可以控 制一度的角度旋转,分辨率过小,若周期分割后单 Read More

image-5

勿忧,已成过往

1、过分在意别人的看法,立场不坚定 2、自卑心理,什么事都喜欢与人比较,其实没有意义,这样只会不断的放大自己的缺点, 3、喜欢半途而废,总是喜欢定一些难以完成的目标,然后长时间看不到付出的回报,得不到正向反馈,久而久之就会松懈下来,直至放弃。我们应该给自己定一个小的目标,小到足以让自己完成的目标。 时常在深夜辗转难眠,有时是回忆过往,时而展望未来; 往事的种种不堪历历在目,想想如果当时不那样做,还会有哪些方法可以将事情处理得更好,让结果不那么难堪、不那么尴尬。我知道自己本身的很多不足之处,我是个自尊心极强,害怕犯错,哪怕只是微不足道的错误,尤其害怕在众目睽睽之下犯错,我害怕自己成为众人的笑柄, Read More

image-5

ec11 旋转编码器 一定位一脉冲检测程序

这里记录了两种检测方式,通过中断处理如果旋转太快是有可能丢步的,这里异步方式是基于 embassy 框架的,所有实际效果还与其他任务占用时间有关系。 同步检测方式: 正反转检测逻辑如下: 状态对应为 AL: a 低 AH: a 高 BL: b 低 BH: b 高 逻辑判断,以反转为例,(正反转只是当a 或 b 拉高时,当前的a b电位状态相反): 1.未触发时 AH BH 不进入逻辑 2.开始反转 AL BH 进入逻辑,上次状态为 AH BH, 更新后上次状态为 AL BH 3.一段时间的无状态变化不进入逻辑,此时状态为 AL BH 4.b 进入拉低状态 当前状态为 AL BL,上次状态为 A Read More