驱动开发-基于GPIO的LED
前言本次实验是基于正点原子开发板I.MX6ULL开发板来学习的 硬件原理分析本次实验我们使用的是正点原子开发板上的led灯,我们查看开发板原理图可以看到led灯连接在GPIO_3引脚上的 我们打开芯片核心原理图可以找到GPIO_3对应的是IMX6ULL芯片的GPIO1_IO03引脚 我们本次实验使用的就是I/O功能,因此我们打开arch/arm/boot/dts/imx6ul-pinfunc.h文件找到对应的宏MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 设备树编写dtbs文件: 添加pinctrl节点 在 iomuxc 节点的 imx6ul-evk 子节点下创建一个名为pinctrl_led的子节点,将 GPIO1_IO03 这个 PIN 复用为 GPIO1_IO03,电气属性值为 0X10B0。 在imx6ull-alientek-emmc.dts文件中找到&iomuxc 节点,添加对应的电气属性 格式: 123456pinctrl_自定义名字: 自定义名字{ fsl,pins = < 引脚复用宏定义PAD(引脚)属性 引脚...
IMX6ULL开发板网络挂载教程
网络挂载教程1.电脑WiFi 上网,开发板和电脑直连1.1VMware 设置1.1.1打开VMware Workstation Pro 里的 虚拟机 -> 设置 1.1.2设置网络适配器为桥接模式。这里不要勾选“复制物理网络连接状态”。 1.1.3因为电脑是WiFi上网,所以需要添加一个网络适配器并设置成NAT模式,供虚拟机上网。具体操作如下图所示。 1.1.4打开菜单栏的 编辑 -> 虚拟网络编辑器 1.1.5点击虚拟网络编辑器的更改设置选项。 1.1.6这个需要电脑管理员权限,如果有提示用户账户控制的提示框,点击是就可以了。 1.1.7重新打开虚拟网络编辑器,可以看到如下界面 如果没有VMnet0,可以手动添加下 1.1.8开发板是直连到电脑的网口的,所以需要虚拟网络编辑器里的网络适配器1(即VMnet0)桥接到有线网卡上,比如文档这里是Realtek Gaming,如下图: 1.1.9我们需要把网络桥接到这个网卡上,以下处理的都是VMnet0,用于桥接网络 1.2Ubuntu 设置1.2.1启动虚拟机,打开Ubuntu的网络设置Network...
驱动开发-Makefile
Makefile编程Makefile规则Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的, 格式: 1234target... : prerequisites... #目标……: 依赖文件集合…… command #命令 1 ... #命令 2 ... #命令 3 1️⃣target就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。 2️⃣prerequisites就是,要生成那个target所需要的文件或是目标。target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中 3️⃣command也就是make需要执行的命令。(任意的Shell命令) 4️⃣==命令列表中的每条命令必须以TAB键开始,不能使用空格==,否则会报错!!! 例子: 1 **注释:**注释用“#”字符,如需使用 **换行:**反斜杠(\)是换行符的意思 Makefile变量命名规则: 变量的命名...
CH12-KEYBOARD
CH12-KEYBOARDkeyboard 主板原理图 扩展模块原理图 引脚表 引脚序号 主板引脚 扩展版模块引脚 1 5v 2 ==PB6== ROW_1 3 GND GND 4 ==PB7== ROW_2 5 ==PB1== COLUMN_1 6 GND GND 7 ==PB0== COLUMN_2 8 ==PA8== COLUMN_3 9 VDD_NODE 3V3 10 PB4 ==注意:OLED的IC3需要使用8、10两个序号的引脚,所以需要读取第三列的按键时需要关闭IC3== 温度转换公式(STM32LO_参考手册(LOx1).pdf)$$\begin{aligned}& R H=100 \times \frac{S_{R H}}{2^{16}-1}...
CH11-NE555
CH11-NE555 主板原理图 扩展模块原理图 引脚表 引脚序号 主板引脚 扩展版模块引脚 1 5v 2 PB6 LD2 3 GND GND 4 PB7 LD1 5 ==PB1==(ADC_IN9) ADC(PR1) 6 GND GND 7 ==PB0==(TIM3 CHANNEL3) PLUS(PR2) 8 PA8 9 VDD_NODE 3V3 10 PB4 CubeMX配置MDK配置 下载线配置 ADC配置 NE555配置 NE555配置NVIC 回调函数 Timer配置 Timer的NVIC配置 SPI配置1 由于SPI配置后只有三个引脚被配置,但数据通信时还有一个Lora通信SPI1_NSS对映的PA4需要配置为低电平 SPI配置2 OLED引脚配置 GPIO引脚配置 RTC配置 USART_DMA配置 USART参数配置 USART中断配...
CH10-ADC
CH10-ADC 主板原理图 扩展模块原理图 引脚表 引脚序号 主板引脚 扩展版模块引脚 1 5v 2 PB6 LD1 3 GND GND 4 PB7 LD2 5 ==PB1==(ADC_IN9) AIN1 6 GND GND 7 ==PB0==(ADC_IN8) AIN2 8 PA8 9 VDD_NODE 3V3 10 PB4 STM32L0_参考手册(L0x1).pdf ADC 旨在提供与模拟电源和转换通道上施加的电压之间的比率相对应的数字值。对于大多数应用用例,有必要将该比率转换为独立于 VDDA 的电压。对于 VDDA 已知且 ADC 转换值右对齐的应用,您可以使用以下公式来获取该绝对值:$$\begin{aligned}& {V_{CHANNELx}}= ADCD_ATAx\times \frac{V_{DDA}}{FULL_SCALE} \\end{aligned}$$ ADC_DATAx 是 ADC 在通...
CH9-TEMP-WET
CH9-TEMP-WETsts30 STS30引脚图 STS30-DIS在给传感器发送命令后,再发送下一个命令签最少需要等待1ms、写操作时,需发送校验和,只有拥有正确校验和的数据才能被接收,读操作时,主机完成校验和的读取和处理、STS30-DIS支持l2C快速模式(频率最高可达到1000KHz)。 通过查阅STS30-DIS数据手册可知,ADDR引脚拉低时,==设备的地址为Ox4A(默认)==,ADDR引脚拉高时,==设备地址为Ox4B==。在12C通信时,需要用LSB来表示R/W,故设备==写地址时(LSB=0)为Ox94==,设备==读地址时(LSB=1)为0x95==。 IIC数据地址 写时序:具体步骤:开始信号一发送I2C设备地址(8位的数据,高7位是设备地址,最后一位是读写位,1表示读操作,0表示写操作)一从机发送的应答信号(ACK)一再次发送开始信号—发送写入数据的寄存器地...
CH8-TIMER
CH8-TIMERCubeMX配置MDK配置CubeMX配置 下载线配置 Timer配置 Timer的NVIC配置 SPI配置1 由于SPI配置后只有三个引脚被配置,但数据通信时还有一个Lora通信SPI1_NSS对映的PA4需要配置为低电平 SPI配置2 OLED引脚配置 GPIO引脚配置 RTC配置 USART_DMA配置 USART参数配置 USART中断配置(IDLE) NVIC配置 时钟树配置 生成文件配置1 生成文件配置2 MDK代码编写Timer12345678910111213HAL_TIM_Base_Start_IT(&htim7);//timer初始化函数void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//timer回调函数{ static int time_flag=0;//定义一个时间函数 if(htim7.Instance == TIM7)//判断是否为TIM7的定时中断 ...
CH7-Lora
CH7-LoraLora原理图 Lora连接原理图 表1.stm32连接LORA引脚 STM32引脚 LORA引脚 功能 PA4 SPI1_NSS SPI 片选引脚,低电平有效 PA5 SPI1_SCK SPI 总线时钟引脚,常态为低电平,上升沿触发 PA6 SPI1_MISO SPI 总线从机输出引脚。当 MCU 读取模块数据时,模块数据由此引脚输出 PA7 SPI1_MOSI SPI 总线从机输入引脚。当 MCU 向模块写数据时,数据从此引脚写入 MDK配置CubeMX配置 下载线配置 SPI配置1 由于SPI配置后只有三个引脚被配置,但数据通信时还有一个Lora通信SPI1_NSS对映的PA4需要配置为低电平 SPI配置2 OLED引脚配置 GPIO引脚配置 RTC配置 USART_DMA配置 USART参数配置 USART中断配置(IDLE) NVIC配置 时钟树配置 生成文件配置1 生成文件配置2 MDK代码编写Lora123456789101112131415...
CH6-OLED
CH6-OLEDIIC-OLED OLED_POWER原理图 CubeMX 下载线配置 OLED引脚配置 GPIO引脚配置 RTC配置 USART_DMA配置 USART参数配置 USART中断配置(IDLE) NVIC配置 时钟树配置 生成文件配置1 生成文件配置2 MDK代码编写oled1234567891011121314151617181920/* IIC OLED */void IIC_OLED_Init(unsigned char ms)//初始化函数,需要延时100ms{ HAL_GPIO_WritePin(OLED_POWER_GPIO_Port, OLED_POWER_Pin, GPIO_PIN_RESET);//使能OLED,PB5=LOW HAL_Delay(ms);//延时100ms OLED_Init(); //OLED.C中自带的初始化函数 OLED_Clear();//OLED.C中自带的清屏函数,否则会出现乱码}void OLED_Write(unsigned c...