DAC---小爱心
DAC简介DAC 为数字/模拟转换模块,故名思议,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。 STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有两个 DAC输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错检测能力,可外部触发。 DAC 功能框图剖析 整个 DAC 模块围绕框图下方的“数字至模拟转换器 x”展开。 左边引脚:VDDA、VSSA 及 Vref+,其中 STM32 的 DAC 规定了它的参考电压:math:V_{ref +} 输入范围为 2.4~3.3V。 “数字至模拟转换器 x”:为 DAC 的数据寄存器“DORx”的数字编码,经过它转换得的模拟信号由图中右侧的“DAC_OUTx”输出 数据寄存器“D ...
旋转矩阵的左右乘
什么是旋转矩阵其中两个重要的概念就是,坐标变换和旋转向量,下面有两个简单的栗子🌰 坐标变换 其左边变换的关系如下: 通过矩阵的表示: 中间的2×2矩阵即为我们所说的旋转矩阵,这里特别要注意,这个矩阵的意义是将p点在旋转后的坐标系(红色)中的坐标,转换为旋转前的坐标系(黑色)中的坐标。 为什么会这样呢?从代数的角度出发最容易理解,请不要嫌麻烦,一步一步跟我来: 旋转矩阵的列向量: 可以看出,根据几何关系写出的旋转矩阵,其列向量恰好为旋转后坐标系(红色)的坐标轴在旋转前的坐标系(黑色)中的坐标,或者叫方向余弦。 也就是说,我想写出坐标系B相对于坐标系A的旋转矩阵,只需要将坐标系B相对于坐标系A的方向余弦写成矩阵的形式即可,如下图所示: 看到这个矩阵不要蒙,单独看其中一列,就是B坐标系的某一轴在A坐标系的X轴、Y轴和Z轴的投影,也就是我们所说的方向余弦。 取第一行,其实际运算的时候是这样: 看最左侧,为p点(向量)在A坐标系下的x方向坐标,以此类推,旋转矩阵将p点在B坐标系下的坐标,转换为在A坐标系下的坐标。 旋转向量旋转矩阵除了坐标变换的功能,还有一个功能就就是能够将向量旋转 ...
触摸屏(三)---电阻屏校准算法
为什么电阻屏要校准其实就是一种坐标的转换,lcd屏幕有自己的扫描方向,但是触摸屏也有自己的扫描方向,可能两个坐标系不一定相同,这样触摸的点就不能对应显示反馈到显示屏,这个时候就要校准,目的就是在这两种坐标系之间找到一种合适正确的映射关系,使触摸屏上显示的图形经过变换,与LCD显示的图形保持一致。 电阻触摸屏的基本线性校准算法我们设这里Q(x,y)为触摸屏上的点,称为物理坐标;Qd(xd,yd)为LCD显示屏上的点,称为显示坐标。 设物理坐标(用极坐标表示): 考虑到两个屏之间可能还会存在角度上的误差,每个点的x和y可能存在缩放的问题,还会有移动的误差,那么综合一下,抽象一个抽象的数学模型出来😅 假设角度差为φ,缩放因子为kx和ky,位移因子为Sx和Sy,可得到显示坐标: 一般情况,触摸屏和 LCD 显示屏之间的角度误差 φ 极小,则 sinφ≈φ,cosφ≈1。那么,LCD 显示屏上点坐标可以化简为: 由上式中可以看出,除了x和y,方程式右边各项均为常量,即触摸屏和显示屏的坐标系可以认为是线性的,基于此方程实现的校准也称为线性校准。现在用一般情况来代替各乘积项的 ...
触摸屏(一)---四线电阻触摸屏原理
结构 上图是电阻触摸屏的一个侧面剖视图。手指触摸的表面是一个硬涂层,用以保护下面的PET层。PET层是很薄的有弹性的PET薄膜,当表面被触摸时它会向下弯曲,并使得下面的两层ITO涂层能够相互接触并在该点连通电路。两个ITO层之间是约千分之一英寸厚的一些隔离支点使两层分开。最下面是一个透明的硬底层用来支撑上面的结构,通常是玻璃或者塑料。 电阻触摸屏的多层结构会导致很大的光损失,对于手持设备通常需要加大背光源来弥补透光性不好的问题,但这样也会增加电池的消耗。电阻式触摸屏的优点是它的屏和控制系统都比较便宜,反应灵敏度也很好。 触摸坐标的计算ITO陶瓷层分为了上下两层,中间用隔离支点分开,这两层是X层和Y层。可以看成如下结构: 其中X层上X-到X+和Y-到Y+的电阻是均匀分布的,又可以看成下面的等效图: 当计算触摸点时分为两步: 计算Y坐标,在Y+电极施加驱动电压V,Y-接地,芯片通过X+测量接触点的电压。 由于ITO层均匀导电,触点电压与V电压之比等于触点Y坐标与屏高度之比。 计算X坐标,在X+电极施加驱动电压V, X-电极接地,Y+做为引出端测量得到接触点的电压。 由于I ...
触摸屏---XPT2046
简介XPT2046 四线电阻式触摸屏,主要由两层镀有ITO镀层的薄膜组成。其中一层在屏幕的左右边缘各有一条垂直总线,另一层在屏幕的底部和顶部各有一条水平总线,如果在一层薄膜的两条总线上施加电压,在ITO镀层上就会形成均匀电场。当使用者触击触摸屏时,触击点处两层薄膜就会接触,在另一层薄膜上就可以测量到接触点的电压值。 首先简单介绍一下4线电阻触摸屏的驱动原理➡️在这可以看看原理 电阻触摸屏内部结构: 当按下触摸屏时RX-、RX+、RY-、RY+的阻值会发生变化,测量到他们的阻值,就得到了按下的位置�? 要得到X坐标,就在X+电极施加驱动电压V,X-接地,然后通过Y+或Y-测量电压值,就可以得到RX+、RX-的阻值关系了。 要得到Y坐标,就在Y+电极施加驱动电压V,Y-接地,然后通过X+或X-测量电压值,就可以得到RY+、RY-的阻值关系了。 XPT2046的介绍XPT2046是一款4线制电阻式触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O接口XPT2046能通过执行两次A/D转换查出被按的屏幕位 ...
软件模拟SPI
什么是SPISPI通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说)、MOSI(数据输出,针对主机来说)、SCLK(时钟,主机产生)、CS/SS(片选,一般由主机发送或者直接使能,通常为低电平有效)。全双工。 SPI 物理层 一个主机可以连接多个从机,其中SCK,MOSI,MISO所有从机共用。SSx单独连接主机。当主机需要和从机通信时,主机把对应的从机的SSx线拉低。从机发现自己的SSx线被拉低,则表示主机要和它通信了。对比IIC,SPI不需要外接上拉电阻,也不需要广播地址来寻机。 SPI协议层SPI只有开始信号,停止信号,和数据有效性信号,读写信号(同步的)。相比IIC,少了应答机制。 开始信号:NSS被拉低的下降沿(SSx、CS。都叫做使能线,片选线。叫法很多,作用一样 都是让从机使能通信) 停止信号:NSS被拉高的上升沿。 触发。表示主机读一位从机的数据,从机读一位主机的数据。 采样。表示总线的上数据已就绪,可以读了。采样后,MISO、MOSI线上的数据被锁存直到被转移。 SPI的4种模式SPI的4种模式,先说一下两个概念 ...
STM32学习(一)----LCD屏幕(FSMC)
FSMC简述 大容量,且引脚数在 100 脚以上的 STM32F103 芯片都带有 FSMC 接口。 FSMC,即灵活的静态存储控制器flexible static memory controller。 扩展内存 STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。 FSMC就是一个MCU与外部存储器(SRAM,FLASH等)读写数据的一个接口 FSMC内部原理FSMC 的框图 NE[4-1] 片选,用来区分不同设备 NWE为写。 NOE为读 n低电平有效 o output e 使能 驱动SRAM FSMC驱动外部SRAM时,外部SRAM的控制一般有 地址线(如A0-A25) 数据线(如D0-D15) 写信号(WE,即WR) 读信号(OE,即RD) 片选信号(CS) 如果SRAM支持字节控制,那么还有UB/LB信号。 驱动TFTLCD 真正在操作LCD的时候需要用到的就只有: RS、D0~D15、WR、RD和CS。 其操作时序和SRAM的控制完全类似,唯一不同就是TFTLCD有RS信号,但 ...
FreeRTOS(五)----内存管理
一、内存管理基本概�?FreeRTOS 内存管理模块管理用于系统中内存资源,它是操作系统的核心模块之一。主要包括内存的初始化、分配以及释放�? 很多人会有疑问,什么不直接使用 C 标准库中的内存管理函数呢?在电脑中我们可以用 malloc()�? free()这两个函数动态的分配内存和释放内存。但是,在嵌入式实时操作系统中,调用 malloc()�? free()却是危险的,原因有以下几点: 这些函数在小型嵌入式系统中并不总是可用的,小型嵌入式设备中�? RAM 不足�? 它们的实现可能非常的大,占据了相当大的一块代码空间�? 他们几乎都不是安全的�? 它们并不是确定的,每次调用这些函数执行的时间可能都不一样�? 它们有可能产生碎片。(就是内存会越切越小) 这两个函数会使得链接器配置得复杂�? 如果允许堆空间的生长方向覆盖其他变量占据的内存,它们会成�? debug 的灾难�? FreeRTOS 对内存管理做了很多事情,FreeRTOS �? V9.0.0 版本为我们提供了 5 种内存管理算法,分别�? heap_1.c、heap_2.c、heap_3.c、hea ...