无题
DMA(直接存储器访问)在没有 DMA 技术前,I/O 的过程:
CPU 发出对应的指令给磁盘控制器,然后返回;
磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区中,然后产生一个中断;
CPU 收到中断信号后,停下手头的工作,接着把磁盘控制器的缓冲区的数据一次一个字节地读进自己的寄存器,然后再把寄存器里的数据写入到内存,而在数据传输的期间 CPU 是无法执行其他任务的。
什么是 DMA 技术在进行 I/O 设备和内存的数据传输的时候,数据搬运的工作全部交给 DMA 控制器,而 CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的事务。
具体过程:
用户进程调用 read 方法,向操作系统发出 I/O 请求,请求读取数据到自己的内存缓冲区中,进程进入阻塞状态;
操作系统收到请求后,进一步将 I/O 请求发送 DMA,然后让 CPU 执行其他任务;
DMA 进一步将 I/O 请求发送给磁盘;
磁盘收到 DMA 的 I/O 请求,把数据从磁盘读取到磁盘控制器的缓冲区中,当磁盘控 ...
无题
CAN总线简介CAN总线协议(Controller Area Network),控制器局域网总线,是德国BOSCH(博世)公司研发的一种串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议主要用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束,该协议的健壮性使其同样适用于自动化和工业环境中。即使双绞线中有一根断路,或有一根接出其至两根线短接,总线都必须能继续工作。
CAN总线优点
简单且成本低
完全集中
抗干扰能力极强
高效
CAN节点组成CAN节点通常由三部分组成:CAN收发器、CAN控制器和MCU。
CAN总线通过差分信号进行数据传输,CAN收发器将差分信号转换为TTL电平信号,或者将TTL电平信号转换为差分信号,CAN控制器将TTL电平信号接收并传输给MCU
CAN总线特性在CAN总线上,利用CAN_H和CAN_L两根线上的电位差来表示CAN信号。CAN 总线上的电位差分为显性电平(Dominant Voltage)和隐性电平(Recessive Voltage),其中显性电平为逻辑 0,隐性电平为逻辑 1。
PID精讲
PID精讲(该文章是本人对视频的个人整理笔记,如有侵权请联系我进行删除)引入假设一个工人控制水阀,使水流量稳定,工人可以看到并知道水流量为1L/s。某时刻,水管破裂,流量变为0.9L/s,工人通过控制水阀使得流量恢复到1L/s。之后,工厂要求水流达到2L,工人通过观察并控制水阀使得水流量为2L/s。
在上面的例子中,工人起到的作用如下:
稳定流量
改变流量
检测流量
PID可以理解为代替工人作用的工具。
适用系统适用于二阶及以内的线性系统
线性系统性质(信号与系统)(卡尔曼滤波):
齐次性(设y=f(x),在x变为kx时,y变为ky)
叠加性 (设y1=f(x1),设y2=f(x2),y1+y2=f(x1)+f(x2)=f(x1+x2))
一阶系统
二阶系统
宏观意义开环控制系统
PID 为其中的控制器,接收期望值,发出动作信号给执行器。可以类比上文的工人控制水阀的情况。
前馈控制系统
PID 为其中的控制器,接收期望值,发出动作信 ...
日语笔记
日语笔记对于日语学习的一些看法和交流日语是借鉴于中国的文字日本古代是没有正式的文字的,只存在语音上的交流,因此产生了许多不便。自从开始与中国展开交流以后,借鉴我们中国的汉字,发明了日语并沿用至今。我个人认为无论何种语言,其间都会有交叉的地方,即语言不是独立一说。那不难联想到在遥远的古代或许只存在一种人种,即人类这一人种。
日语门槛在五十音图经过一段时间的学习,我发现五十音果然异常重要,就像中文里的拼音,像英文里的字母。所以一定要背熟五十音图。
ps:日语不算难,但没有耐心是不行的,或者说任何一门语言都需要耐心的积累。
语法速成
电路原理笔记
电路原理笔记电压 电流 参考方向 功率
电阻 独立源 受控源 KCL KVL
电阻等效变换 电源等效变换
高等数学笔记
高等数学笔记极限
导数
微分
不定积分
麦克纳姆轮
麦克纳姆轮定义首先在研究轮子前,让我们先了解一下它的特性,下面这篇文章写得较好可以先阅读一下,别人已经把轮子造出来了,就没有必要再把文章复制一遍.
转载文章链接:挽风 古月居
麦克纳姆轮的原理转载视频链接:[麦克纳姆轮定义](可以前后左右平移的神器轮子 来看看是怎么做到的-麦克纳姆轮平移原理_哔哩哔哩_bilibili)
麦克纳姆轮在程序中的实现首先来看一下麦克纳姆轮配合esp32的效果
转载视频链接:ESP-NOW、蓝牙控制微型麦克纳姆轮小车-哔哩哔哩
ESP32蓝牙麦克纳姆轮全向小车开源资料 gitee仓库:https://gitee.com/kvcx/bluetooth-car
麦克纳姆轮优缺点
优点
任意方向运动
狭小空间内的灵活穿梭
平面内任意方向的快速精确定位
缺点
成本相对较高
对电控要求较高
c语言学习
第一节 学习打印1234567#include <stdio.h> int main(){ /* 我的第一个 C 程序 */ printf("Hello, World! \n"); return 0;}
所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
printf() 用于格式化输出到屏幕。printf() 函数在 “stdio.h” 头文件中声明。
/* … */ 用于注释说明。
stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
return 0; 语句用于表示退出程序。
在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。
打印一条鱼123456789101112int main(){ printf("\n\ ...