
单片机
单片机stm32 nxp ,esp32
紫枫洛天
这个作者很懒,什么都没留下…
展开
-
华芯片特微 M33内核 KEIL5环境配置不上问题
jlink不能下载原创 2023-01-14 23:10:11 · 976 阅读 · 1 评论 -
stm32 KEIL AC6 优化0程序不运行问题解决
最新的HAL库代码用AC6编译器,优化等级为0 程序不运行, 优化等级为非0能正常运行。解决方案勾选use microLIb。原创 2022-10-29 20:50:02 · 1311 阅读 · 1 评论 -
EEROM和FRAM写入速度比较
如果是页写入, 因为是32字节一页, 因此需要写4次 时间差不多90ms。FRAM写入的速度比EEROM快很多,读取时间差不多 因此关注写的时间。比如写128字节, 如果字节写入. 那么时间为1.47s。时间就是100k I2C的时间, 12ms。2 FRAM写入128字节。接口为100K i2c。写的时间需要10ms。原创 2022-08-24 21:51:47 · 604 阅读 · 0 评论 -
I2C读取EEROM时序图
0x00地址写入0x5a数据。原创 2022-08-24 19:56:31 · 355 阅读 · 0 评论 -
STM32H750 SRAM中下载和调试程序
以前以为stm32h7没有boot1按钮之后只能用flash下载, 今天知道可以用SRAM下载调试 能节省很多时间。原创 2022-08-21 12:22:54 · 1164 阅读 · 0 评论 -
win10 实时保护对KEIL5 编译速度慢的响应
突然发现台式比笔记本编译慢很多, 但是CPU跑分确实台式比较高。因此怀疑系统有问题,直接重装了系统。后来发现是实时保护问题,关掉就编译快很多了。原创 2022-08-21 09:20:04 · 827 阅读 · 0 评论 -
stm32h7b0替代h750程序导致单片机挂掉无法烧录程序问题
h750是480M, h7b0是280M如果直接用H750的程序,会导致单片机挂掉, 用jlink去读保护没作用, 用stlink连接不上1 先用jlink去读保护2 再下载最新的stm32h7的包h750和h7b0的包不一样, 如果选择H750会下载失败 一定要选择h7b0...原创 2022-06-19 12:32:29 · 2914 阅读 · 1 评论 -
stm32H7 擦除读写SPI NOR FLASH时间测试
手册上如图1 全篇擦除时间测试时间33秒2 4KB擦除时间16m spi - 36MS3 256字节页写入时间 16m spi - 500us4 4K字节写入时间 16m spi - 8ms5 4K数据读取时间 16m spi - 2ms原创 2022-05-29 19:02:31 · 2325 阅读 · 0 评论 -
stm32H7 SPI和SPI DMA时间差异对比
偶然发现spi dma如果在单个字节速度会比spi模式慢很多, 因此做一个对比SPI速度设置为16M1 单个字节收发SPI模式可以看到每个字节的数据之间有不是连续的, 中间会有一段时间没有数据SPI DMA模式如果每次收发1个字节, 会慢很多 达到8us, 远远超过了SPI模式2 SPI DMA大量数据读写因为SPI模式间隔和单字节是一样的,这里就只测试SPI DMA模式可以看到SPI DMA数据和数据之间是连续的3 SPI模式和S原创 2022-05-28 19:50:50 · 4386 阅读 · 1 评论 -
stm32h750从上电到main函数时间
一直以为stm32从上电到main函数很快, 今天实际测量了一下运行到main所花的时间主要包含: 晶振启动时间 + PLL稳定时间 + clib初始化时间 + 有初值的变量初始化 + BSS清零1 外部晶振25M配置480M, 一共花了500us2 采用内部晶振配置480M 417us结论: stm32启动时间一般在1ms以内, 还是能接受, 尽量晶振外部电路好点 这样启动快点...原创 2022-05-28 16:01:59 · 921 阅读 · 0 评论 -
亿百特E22 lora模块使用教程
E22lora模块算是卖的比较好的1 准备2个lora模块, 2个ch340模块, 1个lora模块配置工具2 lora模块透明传输和定点传输官方资料做的特别烂, 全放一堆寄存器 也没说具体使用流程定点传输: 会把前3个字节识别为:地址高+地址低+信道每个节点有自己的地址和信道, 只有发送放的地址和信道相匹配才可以通讯.一般一个系列的产品信道都是一样的, 只是地址不同. 比如主机地址是0, 从机地址是1-N主机可以发送广播去让从机采集数据, 或者发送...原创 2021-12-25 18:48:37 · 13074 阅读 · 4 评论 -
windows10 驱动开发环境搭建vs2019 helloworld
因为特殊原因需要搭建win10驱动环境, 因此学习了一下 但是发现win10环境特别麻烦vs2022已经出来了,但是没看到驱动支持, 因此还是选择vs2019提前准备1 查看系统版本2 下载vs2019 社区版本3 需要win10 sdk Software Development Kit(软件开发工具包)4 需要wdk Windows Driver Kit(Windows驱动程序工具包)2 vs2019安装选择c++ 桌面开发, 选择win10 sdk 10.0.原创 2022-01-03 17:53:12 · 3287 阅读 · 1 评论 -
NXP RT1062 flashloader下载程序到RAM执行
目前要下载程序到ram执行, 目前有2种方法1 用jlink直接选择debug或者ram_0x1400, 然后点击debug就可以仿真了这里面有3个重要的东西:第一个是分散加载文件, 可以看到全部在RAM需要去掉load application at startup和ini文件中的初始化2 用flashloader需要用串口或者USB来下载程序到RAM参考资料:痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(4)- Fla...原创 2021-12-01 22:48:17 · 7484 阅读 · 0 评论 -
ESP32 vscode插件环境搭建2021-09
以前配置ESP32环境太难配置了, 这次看了下官方可以配置vscode插件. 这次就用这个方法试试1 vscode安装espctrl + shift +p 弹出来配置框 输入, configure esp选择第二个选择路径, 注意路径不要带中文和空格, 建议选esp的服务器, github服务器挂梯子之后也下载不了等待安装如果下载出错, 需要把之前下载的都删除掉2 点灯DEMO在用户vscode目录下有一个demoa...原创 2021-09-15 22:26:59 · 709 阅读 · 1 评论 -
esp8266 esp32使用http post往flask发送json数据以及解析json
平台esp32 +vscode + platformio需要安装的库#include "HTTPClient.h"#include <ArduinoJson.h>难点网上很多都是使用http get, 很少用http post的,但是往服务器传数据一般都是post直接上代码#include <Arduino.h>#include "HTTPClient.h"#include <ArduinoJson.h>const char *s原创 2020-12-15 20:03:42 · 3567 阅读 · 1 评论 -
stm32h750 mcu屏显示图片
1 使用image2lcd把jpeg图片转换设置16位, rgb565, 注意输出图片分辨率有限制2 把上面保存为C语言输出在显示驱动中, 把数组抓换为16位指针, 然后直接访问原创 2021-10-16 14:08:29 · 916 阅读 · 0 评论 -
RGB888和RGB565屏幕显示效果区别
很想测试一下RGB888和RGB565屏幕的显示区别用image2lcd把图片转换一下, 屏幕分辨率为800x4801 以下是对比: 左边RGB888 右边RGB565原创 2021-09-27 22:47:24 · 6109 阅读 · 3 评论 -
正点原子stm32H743IIT6 使用LVGL开启DMA2D解码
找到lvgl_conf.h 设置如下/* 1: Enable GPU interface*/#define LV_USE_GPU 0 /*Only enables `gpu_fill_cb` and `gpu_blend_cb` in the disp. drv- */#define LV_USE_GPU_STM32_DMA2D 1/*If enabling LV_USE_GPU_STM32_DMA2D, LV_GPU_DMA2D_CMSIS_INCLUDE mu原创 2021-08-20 13:13:00 · 2835 阅读 · 0 评论 -
stm32 HAL 8位串口数码管74HC590驱动
dio d11sclk d12rclk d13#include "drv_led.h"// 平台文件#include "stm32h7xx_hal.h"#include "delay.h"unsigned char fseg[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char LED[8]; //用于LED的4位显示缓存void dio_w(uint8_t state)...原创 2021-07-31 19:30:44 · 738 阅读 · 0 评论 -
stm32 cubemx freertos 中断二值信号量卡死问题
功能: 按键中断里面释放二值信号量, 然后点亮LED灯问题: 卡在xSemaphoreGiveFromISR代码:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ uint32_t ulReturn; BaseType_t pxHigherPriorityTaskWoken; /* 进入临界段,临界段可以嵌套 */ ulReturn = taskENTER_CRITICAL_FROM_ISR(); if(GPIO_Pin.原创 2021-04-16 21:00:18 · 3969 阅读 · 1 评论 -
stm32H743IIT6 cubemx HAL USB UVC摄像头基础
stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上开发环境: stm32cubemx 6.0.1单片机: 自己做的stm32h743iit6核心板,兼容正点原子学习资料:圈圈学USB鱼鹰谈单片机从零开始学习USBhttps://to-run-away.blog.youkuaiyun.com/article/details/85038393整个项目是基于CDC串口上修改1 stm32 USB 代码概览..原创 2021-04-15 00:00:13 · 6623 阅读 · 0 评论 -
stm32cubemx h743 FLASH和SD卡模拟为U盘
1 cubemx 配置在已经驱动了SDMMC和SPI-FLASH的基础上实现勾选device选择MASS storeage class注意下面的MSC 512最好默认, 有些教程说SPI-FLASH是4096, 那么MSC也是4096, 这个方法在以前f407的可以使用但是现在h743不行, 电脑不能识别处理, 可能cubmex更新了, 这也没得法 只能跟着来, 把SPI-FLASH改为512字节2 代码配置主要更改storageif.c更改了LU...原创 2021-04-09 22:40:41 · 2103 阅读 · 0 评论 -
stm32H743 cubemx USB模拟读卡器不识别问题
1 SDMMC FATFS在以前的407工程都可以跑通, 但是新的cubemx对h743的SDMMC好像有问题在没加入fatfs之前, 可以用下面代码读取参数void sdmmc_test(void) { int sdcard_status = 0; HAL_SD_CardCIDTypedef sdcard_cid; sdcard_status = HAL_SD_GetCardState(&hsd1); if(sdcard_status == HAL_S原创 2021-04-09 18:12:38 · 1400 阅读 · 4 评论 -
stm32H743 stm32cubemx SPI_FLASH FATFS
这个例程建立在已经有了SPI驱动的条件下1 cubemx 配置勾选user-defiend, 4096 扇区支持如果要支持中文和长文件名勾选这个设置堆栈大小2 代码配置user_disokio.c中添加读写函数1 初始化DSTATUS USER_initialize ( BYTE pdrv /* Physical drive nmuber to identify the drive */){ /* USER CODE BEGIN原创 2021-04-08 17:08:14 · 1220 阅读 · 0 评论 -
stm32cubemx QSPI 直接映射模式
我看了大多数的qspi flash内存映射模式都是用于放代码的, 也没怎么讲我这里就使用w25q128来完成内存映射, 寄存器和HAL两个版本1 野火版本/** * @brief 配置QSPI为内存映射模式 * @retval QSPI内存状态 */uint32_t QSPI_EnableMemoryMappedMode(){ QSPI_CommandTypeDef s_command; QSPI_MemoryMappedTypeDef s_mem_m...原创 2021-04-08 09:00:53 · 4805 阅读 · 0 评论 -
stm32h743iit6 cubmex 配置QSPI w25128模式问题
正点原子和野火都是使用的w25q256, 如果使用w25q128程序要改动一些W25Q256的4字节地址,128是3字节把所有的32_bits改为24_bitsQSPI_Send_CMD(W25X_SectorErase,Dst_Addr,0,QSPI_INSTRUCTION_4_LINES,QSPI_ADDRESS_4_LINES,QSPI_ADDRESS_32_BITS,QSPI_DATA_NONE);/ QSPI_Send_CMD(W25X_SectorErase,Dst_Add原创 2021-04-07 20:48:16 · 568 阅读 · 0 评论 -
stm32 ov2640硬件软件笔记
ov2640 学习笔记1 硬件这是通用的DVP ov2640,需要用2个LDO供电, 我这里把AVDD和DVDD接在了一起, 为了剩成本, 如果专业点应该AVDD中间放一个磁珠, AGND和GND也要放磁珠, 或者单独供电SCCB类似IIC, 要上拉电阻PWDN是低电平使能VSYNC PCLK线尽量避免干扰, 否则出现花屏MCLK是ov2640的时钟输入, 相当于stm32的晶振一样, 一般是24M时钟, 这个可以用stm32的MCO输出时钟来提供, 也可以一个晶振来提供时钟2 软件原创 2021-03-04 12:03:07 · 4371 阅读 · 1 评论 -
stm32 HAL S6D041C 3寸液晶屏驱动
最近得到了这个3寸分辨率240x400的液晶屏, 通过看手册写了驱动程序, 使用cubmex来配置的先放初始化代码, 默认是RGB 横屏// 液晶初始化static void lcd_init(void){ // VCOM 3.3V lcd_write_reg(0xf4); lcd_write_data(0x59); lcd_write_data(0x59); lcd_write_data(0x52); lcd_write_data(0x52); lcd_write_data(0原创 2021-01-08 22:18:57 · 860 阅读 · 1 评论 -
stm32 HAL ILI9481 8位和16位驱动
最近入手了ILI9481这个屏幕, 可以驱动SPI, MCU 8位和16位, 因此研究了一下8位MCU的驱动区别在于1, FSCM里面要配置为8位 FSMC_NORSRAM_TimingTypeDef Timing = {0}; FSMC_NORSRAM_TimingTypeDef ExtTiming = {0}; /** Perform the SRAM1 memory initialization sequence */ hsram1.Instance = FSMC_N原创 2021-01-07 15:16:05 · 3253 阅读 · 1 评论 -
stm32 DMA2D使用中断LVGL,提高LVGL帧率
我看了很多DMA2D教程都是用阻塞方式来刷新屏, 这样就消耗了性能 相当于没用DMA, 所以我使用DMA2D中断来传输数据测试平台stm32f429 + 正点原子7寸1024x600液晶屏 45MHZ刷新率 + LVGL公有条件:LTDC刷新率45MHZ, 开启SDRAM 突发传输, LVGL 2个全尺寸缓冲区1 LVGL不使用DMA2D, 使用寄存器DMA2D传输LVGL配置#define LV_USE_GPU 1 /*Only enabl.原创 2020-12-14 13:27:27 · 16418 阅读 · 11 评论 -
stm32 DMA2D知识点
LTDC会一直从显存中搬运数据并刷新数据到液晶屏, 所以我们只需要往显存写数据就可以了1 什么是DMA2D下面资料来自安富莱BSP手册2 DMA2D工作模式1 模式 1:寄存器到存储器模式这个模式主要用于清屏,也即是将显示屏清为单色效果2 模式 2:存储器到存储器模式这个模式用于从一个存储器复制一块数据到另一个存储器,比如将摄像头 OV7670 的输出图像复制到LCD 显存就可以采用这种方式。3 模式 3:存储器到存储器模式,带颜色格式转换这个模式比模...原创 2020-12-13 22:41:48 · 5712 阅读 · 1 评论 -
stm32 LTDC画面撕裂解决方法
1 检查硬件是否连接好,是否焊接好2 如果画面出现严重花屏, 考虑降低LTDC时钟2用户更新显存数据期间,LTDC 也在不断的读取显存的数据到显示屏上,如果用户才更新了部分界面数据,后面部分还没有更新,LTDC 刷新到显示屏的界面效果出现撕裂感,即下面这种现象:解决方法:LTDC 刷新还在垂直消隐期间就将整个界面刷新完成,而我们如何只知道 LTDC 在垂直消隐期,通过函数 HAL_LTDC_ProgramLineEvent 设置刷新到指定行时进入中断即可,一般设置为第 0 行..原创 2020-12-13 16:28:14 · 4537 阅读 · 1 评论 -
stm32 LTDC配置液晶屏时序检查方法
stm32 ltdc会从显存中不停搬运数据, 然后进行叠加后输出到LCD背景层只支持单色显示, 所以就适合来检查时序是否是正确的代码如下, 我设置了蓝色, 没设置图层, 也就是说没设置显存等, 结果会显示蓝色LTDC_HandleTypeDef hltdc;void MX_LTDC_Init(void){ hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSP..原创 2020-12-13 16:07:35 · 887 阅读 · 0 评论 -
cubemx6.0配置LVGL7.8
1 下载下载地址:https://github.com/lvgl/lvglhttps://github.com/lvgl/lv_examples下载解压后, 把lvgl改名为lvgl_core, lv_example改名为lvgl_example1 把lvgl目录下得lv_confi-tempplate.h改名为lv_conf.h, 并且修改了if 0 为if 1, 最好复制到最外层文件夹, 对于lv_ex_confi也是如此必须要改名和修改0为1, 不然编译会报错...原创 2020-12-13 11:42:29 · 1899 阅读 · 0 评论 -
cubemx6.0配置touchgfx 正点原子触摸屏,touchgfx添加触摸驱动
上一步点亮屏幕之后, 现在还不能触摸, 于是这篇讲下如何添加触摸0 如何添加触摸代码只需要在stm32Ouchcontroller.cpp中添加如何获取点就可以了注意这个是c++写的, 传统的驱动是C写的,不能直接调用要extern "C"来调用1 正点原子驱动代码正点原子代码有点乱, 我重写了下驱动软件IIC, 通过宏定义方便移植, 同时把delay_us函数写到main.c中实现, 因为带操作系统和不带操作系统的delay_us实现方式不一样并且如果时钟频率不一样原创 2020-12-11 23:12:55 · 3971 阅读 · 2 评论 -
cubemx 6.0 配置正点原子rgb屏幕 touchgfx 4.15
按照上一篇配置基础上修改,1 DMA2Drgb 565, 打开全局中断2 LDTC注意时序 ,打开全局中断3 CRC打开就可以4 freeRTOS修改默认stack size为20485 添加touchgfx如果没有touchgfx,就点这个安装安装完成之后会在这个目录有touchgfx的安装包双击安装就可以如果已经安装好了touchgfx,点击select components点击了之后发现多了..原创 2020-12-11 01:46:02 · 2350 阅读 · 5 评论 -
cubemx配置正点原子LTDC RGB屏
找了很久都没有cubmx来配置原子RGB屏幕的,于是自己写一个, 我的分辨率是7寸1024x600使用RGB屏幕前提是配置好SDRAM,因为需要缓冲区是建立在SDRAM上面, 如何配置请看我这个文章https://blog.youkuaiyun.com/a2267542848/article/details/110944197如果是其他RGB分辨率,需要改的地方有1 时序2 宏定义 分辨率3 LCD时钟硬件接口一定要注意引脚对应,不然会点不亮屏幕cubmex配置1 打开DMA2D原创 2020-12-10 23:23:52 · 7463 阅读 · 5 评论 -
Cubemx配置原子sdram
看了下原子哥的HAL SDRAM教程, 发现没有cubemx的好用,于是想搞一下cubemx生成SDRAM读写demo1 原理图这个芯片算相当便宜了, 32MB大小5元钱, 比SRAM价格不知道低到哪里去了.2 cubemx配置如图注意时序要配对仅仅这样是不够的,还需要配置PE0 PE13 工程配置在fmc.c中加入下图代码,目的是为了初始化SDRAM//SDRAM配置参数#define SDRAM_MODEREG_BURST_LENGTH_1 ..原创 2020-12-10 00:29:30 · 2314 阅读 · 2 评论 -
嵌入式GUI选择
嵌入式GUI一般GUI有emwin,touchgfx, lvgl, emwin和touchgfx被ST公司收购了, lvgl是开源的GUIemwin和touchgfx的区别,1 Emwin是一个老牌的GUI, 野火原子和安富莱都有对应的教程, 编程用C风格,不能用设计软件来设计2 touchgfx是新出的GUI, 编程类似C++风格,可以集成在cubemx中, 可以用设计软件来设置界面, 未来ST方向应该是这个\3 LVGLlittlevgl是一个小型开源嵌入式 GUI原创 2020-12-09 15:03:51 · 14265 阅读 · 0 评论 -
cubemx freertos不能使用CPU使用率解决方案
CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高,说明机器在这个时间上运行了很多程序,反之较少。利用率的高低与 CPU 强弱有直接关系,就像一段一模一样的程序,如果使用运算速度很慢的CPU,它可能要运行 1000ms,而使用很运算速度很快的 CPU 可能只需要 10ms,那么在000ms 这段时间中,前者的 CPU 利用率就是 100%,而后者的 CP原创 2020-12-09 13:25:18 · 509 阅读 · 0 评论