【通信协议】——CAN
CAN的全称为“控制器局域网络”(COntroller Area Network),它主要应用于汽车电子行业,由德国的BOSCH公司(博世,欧洲家电第一,德国人的东西值得信赖)开发。 CAN物理层 与IIC和SPI不同,CAN总线没有时钟线,所以CAN通讯并不是以时钟信号来进行同步的,**是一种异步通信方式,且只有CAN\_H,CAN\_L两条线共同组成差分信号线**。 闭环总线电路...
CAN的全称为“控制器局域网络”(COntroller Area Network),它主要应用于汽车电子行业,由德国的BOSCH公司(博世,欧洲家电第一,德国人的东西值得信赖)开发。 CAN物理层 与IIC和SPI不同,CAN总线没有时钟线,所以CAN通讯并不是以时钟信号来进行同步的,**是一种异步通信方式,且只有CAN\_H,CAN\_L两条线共同组成差分信号线**。 闭环总线电路...
_注:串口通信包括同步(UART)和异步(USART),开发中常用的为UART,所以本次也侧重介绍UART。_ 串口通信是一种设备非常常用的串行通信方式,因为他简单便捷,因此目前大部分电子产品都支持该通讯方式。产品开发中,工程师也常使用串口用来调试。 物理层 物理层负责数据的实际传输,即通过电缆、无线等媒介发送和接收比特流。 串口通信的物理层有很多标准及变种,通常使用RS-232、RS-...
本次实验使用的是蓝桥杯嵌入式大赛的指定开发板,STM32G431R8T6。 下面为 CubeMX 和代码部分 CubeMX ADC部分 设置引脚选择ADC模式,对应通道选择“Single-ended”(单端输出)。其他默认即可 DAC部分 DAC选择“仅与外部引脚相连”。 生成代码 ad.c ``` #include "ad.h" /* ADC读取函数 * 参数 A...
本次实验使用的是蓝桥杯嵌入式大赛的指定开发板,STM32G431R8T6。 下面为 CubeMX 和代码部分 CubeMX 选择对应引脚,配置为定时器模式,设置通道一路为“Input Captu direct mode”(输入捕获直接模式用于读取周期)、一路为“Input Captu inindirect mode”(输入捕获间接模式用于计算占空比)。 预分频(PSC)设置为(时钟频率-...
本次实验使用的是蓝桥杯嵌入式大赛的指定开发板,STM32G431R8T6。 下面为 CubeMX 和代码部分 CubeMX定时器配置部分 选择对应引脚的通道设置为PWM输出模式(不要选择CH\*N)。 以获取一个100Hz,占空比为50的脉冲信号,现在设置时钟频率为80MHz,参数设置中PSC,ARR需要我们自己配置(当然我们后期实现代码修改频率、占空比的时候会修改这些数据)。 公...
本次实验使用的是蓝桥杯嵌入式大赛的指定开发板,STM32G431R8T6。 下面为CubeMX和代码部分 CubeMX配置 将按键引脚设置为双边沿中断触发模式,并设置上拉电阻。 定时器本次选择TIM3,选择内部时钟源,设置PSC为80-1,COUNTER Period为1000-1,实现1ms定时(频率为80MHz) 并打开定时器中断。 Key.c ``` #inc...
引言 SPI同样也是一个很常用的通信接口,也可以通过SPI来连接众多的传感器。相对IIC,SPI的通信速度更快,SPI可以达到几十MHz。所以在很多要求高速通信的场景会选择使用SPI总线,所以SPI总线也是我们嵌入式学习必不可缺的一部分。 SPI简介 SPI全称为Serial Perripheral Interface,也就是串行外围设备接口。SPI是由Motorola(摩托罗拉)公司推出...
引言 IIC是产品设计中最常用的通信接口,众多的传感器都会提供IIC接口来和主控连接,如陀螺仪、加速计、触摸屏等。所以IIC是嵌入式学习必须要掌握的。 本次只是讲解理论,不做实际实验操作,因为我现在在学Linux,使用的IMX6ULL大家手里面也可能没有这个板子,所以就不做演示啦。 IIC简介 **IIC是很常见的一种总线协议**,IIC是由NXP(恩智浦)公司设计的,IIC使用两条线在...
遇见问题 我在跟随左盟主学习imx6ull的时候,遇见了一个比较难受的问题——**VS code因为找不到头文件而警告**,明明定义并声明了.h文件,但是当引用它的时候就会报错,然而它并不影响我的工程的编译。 但是作为一个强迫症患者,我见不得我的代码里有红色圆点的时候编译它,这样会很难受。所以我找了一下正点原子客服,询问这个情况,客服表示是编译器问题,让我正常使用就可以。但这并不是我...
make工具 当源码文件比较多的时候,不是适合直接输入gcc命令来编译,这时候就需要一个自动化的编译工具。make工具通过Makefile的文件来完成并自动维护编译。 当我们有多个源文件的是时候,我们只用GCC的话就会比较麻烦如: ``` gcc main.c input.c output.c -o main ``` 那么这样的话生成的可执行文件,是可以运行的,但是如果我们有几千个源...
为什么要学汇编? 汇编语言是一个面对机器的程序设计语言,这么一个古老的语言,没什么我们还要去学?在接触裸机开发之后我知道了。 我之前经常使用Keil开发STM32F1、F4系列单片机,我只需要编写C语言部分的代码就可以,为什么我在Keil中不需要写汇编呢?因为ST公司已经帮我们写好了。 在市面上大部分芯片上电后是没有准备好C语言的环境的。所以第一行程序肯定是汇编的,至于要写多少汇编...
我们今天分享如何用裸机开发,点亮I.MX6ULL;我使用的是正点原子阿尔法IMX6ULL开发板,EMCC版本,目前还是处于学习中。 **作为点灯大师,万里长征第一步从点灯开始。** 如何点亮LED 我们在编写STM32点灯代码时候,第一步要做的是了解需要点亮哪一个灯,查看原理图找到LED的连接引脚和什么样的输出状态才能让LED点亮。 我们找到正点原子的原理图,找到LED的部分,发现其...
实现Ubuntu与Window进行文件互传 若使用虚拟的情况,可以直接在Window下复制进行粘贴到Ubuntu中;但是这种方式只限制在一个硬件上安装两个系统。 当时两个真正的硬件系统时候,就无法通过右键-复制粘贴,进行文件互传。那么我们就需要了解一种通用的Ubuntu与Window互传文件的方式——FTP服务。 开启Ubuntu下的FTP服务 在命令行中,输入指令 ``` sud...
我们设计UI界面的时候,可以使用Qt提供的UI可视化界面,通过推拽的方式实现页面设计;我们也可以不适用UI文件进行_**编程设计页面**_。 我们以**按键PushButton**为例: 创建按钮 打开帮助文档,查看按钮的使用说明。 我们如果使用QPushButton这个类,需要先添加头文件;文档下方为按钮的属性、按钮功能函数...。 声明实例化对象 在头文件下声明按钮类...
我们需要自定义给信号槽,首先要知道怎么才能实现信号槽模板 发送者->信号->接收者->槽函数 我们首先要创建自定义的发送者和接收者(创建两个类) 设置类名、类的基类(选择QObject)、文件名称、地址。 自定义信号 创建两个对应的类之后,我们知道信号属于发送者,槽函数属于接收者。我们在接收者类中,声明信号。 声明信号 在发送者(sender)类的.h文件中,声明信号函...
信号槽连接模型 生活中: 学校->通知->学生->上课 Qt中的信号与槽连接模型: 发送者->信号->接收者->槽 _这里的信号和槽都是函数_ 信号槽 我们通过使用Push Button(按钮)来讲解信号槽。 放置按钮 拖拽Push Button组件到界面,并修改按钮大小,文字内容和字体; 连接信号 我们可以把按钮当作一个发送者,将界面当作一个接收者(Mainwin...
OSAL介绍 OSAL即操作系统抽象层。对于协议栈来说,没有操作系统的支撑可以运行,但是一系列逻辑处理需要用户自己定义;从**Z-Stack1.4.3**及以后开始引入OSAL系统。 OSAL是可以理解为是一位“管家”。是一种**基于事件驱动**的**轮询式**操作系统,所提供的管理功能有: - 任务登记、任务初始化、任务触发 - 任务间信息传递 - 任务同步 - 中断处理 -...
我们拿到一个MCU或者MPU是肯定要去了解它的外部引脚,下面我将和大家分享CC2530F256系列的外部引脚的使用。 引脚介绍 下面是官方的手册说明: > 用作通用 I/O 时,引脚可以组成 3 个 8 位端口,端口 0、端口 1 和端口 2,表示为 P0、P1 和 P2。其中,P0和 P1 是完全的 8 位端口,而 P2 仅有 5 位可用。所有的端口均可以通过 SFR 寄存器 P0、...
这次跟大家分享一下如何在Ubuntu系统下创建一个Qt项目。 创建项目 打开“文件”——“新建文件或工程”(快捷方式Ctrl+N)。 选择Qt Widgets Application。 设置名称和地址(不适用中文) 默认使用qmake 设置项目信息,类名等信息。 基类有三种,QMainWindow、QWidget、QDlalog。(初学者使用QMainWindow)...
类中的对象,不仅可以有变量,还可以有函数;那么构造函数与析构函数是两个特殊的函数。 构造函数 构造函数定义了一个名称与类名相同,没有返回值的函数,这个函数成为构造函数; 它会在类的实例化中被调用。 析构函数定义则是一个名称比类名多一个“~”的函数,同样没有返回值;构造函数在对象实例化的时候调用,析构函数则是在对象被销毁的时候调用。 ``` #include<iostream> c...