- 博客(39)
- 收藏
- 关注
原创 控制器一些不常用的的功能说明
软件配置上升沿采样,捕获产生中断的阈值需要小于等于10000,中断产生后,可得到当前捕获的实际周期值是多少,再根据公式反推得到输入波形的频率。软件配置上升沿采样,捕获产生中断的阈值需要小于等于5000,中断产生后,可得到当前捕获的实际周期值是多少,再根据公式反推得到输入波形的频率。通常IIC协议传输,只发送或接收指定长度的数据,没有多余的数据字节,PEC是在协议末尾多发或多收一个字节,用于校验数据正确性。配置数据宽度为8bit,按word模式发送时,数据都是按32位发送的,不足32位时,高位补0。
2024-10-30 19:14:09 1050
原创 Visual studio 2019 编程控制CH341A芯片的USB设备
CH341DLLA64.h里的接口定义,有详细注释,主要用到以下接口函数功能打开CH341A设备设置串口流模式处理SPI数据流只发送数据//命令码0x06先发送数据,再读数据//命令码0X05// 因为CH341的SPI是数据流,所以实际返回数据应该去掉自己发出的1个字节(命令和地址)
2024-04-30 17:08:16 1813
原创 QT程序通过GPIB-USB-HS转接线控制数字万用表
引用vi接口需要的头文件函数功能打开VISA资源管理器viFindRsrc查找VISA设备获得IDviOpen打开VISA设备viClose关闭VISA设备viWrite发送命令或数据viRead接收数据viReadSTB读设备状态引用ni488接口需要的头文件函数功能ibdev获取设备符ibwrt发送命令或数据ibrd接收数据ibwait延时ibrsp读设备状态。
2024-04-30 14:07:38 1755
原创 增强型PWM(EPWM)如何输出互补功能?
带死区的PWM波可以防止上下两个器件同时导通。也就是说,当一个器件导通后关闭,再经过一段死区,这时才能让另一个导通。红色线条的拉低关断一段时间(dead time)后,再拉高下面打开蓝色的。蓝色线条的拉低关断一段时间(dead time)后,再拉高上面打开红色的。互补:两根线,输出的PWM,只有一端导通,和死区概念类似。上述第2节和第3节的不同的配置,均能得到下图的波形。死区时间:指在这段时间,上下都没有输出。蓝色和绿色的线条是需要的波形。蓝色和绿色的线条是需要的波形。
2023-07-14 11:09:24 2061
原创 增强型PWM(EPWM)的输出波形原理
普通的PWM简单配置就能输出指定占空比的波形,一些特殊功能,比如反向,斩波,低电平或高电平指定相位,随意配置等,只能增强型PWM(EPWM)能做到。EPWMX有3组,分别是EPWM1、EPWM2、EPWM3EPWM1有2个通道,EPWM1A和EPWM1BEPWM2有2个通道,EPWM2A和EPWM2BEPWM3有2个通道,EPWM3A和EPWM3B。
2023-06-06 11:16:05 3674
原创 【2019毕业生】浅谈物联网工程专业课在工作中的应用
物联网工程专业,当时培养计划是2个方向,一个是偏硬件+软件结合(嵌入式),另一个就是纯软件(JAVA等)。以下课程是嵌入式要学的专业课,只罗列了相对重要的,其他通识就不说了。PS:以下备注重要程度,纯属个人见解。(专业课)(基础课,学了对专业有辅助作用)(学分要拿到,也可以作为基础课)不要觉得有些课没用,后面工作才知道都是基础,在学校就按部就班的学好专业的每一堂课,到了大三大四,全部连通贯通,就明白了,每一门课都不是多余的。是不是还会觉得学校的技术理论和设备落后?
2023-04-11 11:55:38 324
原创 Visual studio 2019 桌面应用开发(2)
同样的方式,解决方案资源管理器,右键源文件>添加>添加新项,选C++文件再重命名,得到下面文件树。右键解决方案的项目名称,进入属性,找到C++>常规>附加包含目录,添加头文件和链接库所在目录。在属性页找到链接器>输入>附加依赖项,添加链接库全名包含后缀名,应用再确定。在属性页找到链接器>常规>附加库目录,添加头文件和链接库所在目录。解决方案资源管理器,右键头文件>添加>添加新项。填项目名称、解决方案名称、选位置,点创建。最后就可以添加代码,编译,生成exe了。选择头文件,修改名称。......
2022-08-30 10:52:47 1978
原创 硬件信号量hsem
1、硬件信号量和软件信号量的区别1.1、软件信号量比如freertos里的Semaphore,通常使用阻塞的方式,使用共享资源。接口作用xSemaphoreTake(sem, 0)非阻塞(轮询)xSemaphoreTake(sem, pdMS_TO_TICKS(2000))阻塞xSemaphoreTake不能在服务中断程序中调用,如果有必要,可以调用xQueueReceiveFromISR() 来在中断服务程序中获取信号量,虽然这并不是一种正规的操作。软件信号量必
2022-07-15 10:35:00 1679
原创 芯片相关基础了解 - 常提到的名词
对建模文件进行编译,对模型电路进行功能上的仿真验证,查找设计的错误并修正。此时的仿真验证并没有考虑到信号的延迟等一些 timing 因素,只是验证逻辑上的正确性。就是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog 建模)转换为门级网表的过程。逻辑综合的目的是产生物理电路门级结构,并在逻辑、时序上进行一定程度的优化,寻求逻辑、面积、功耗的平衡,增强电路的可测试性。但不是所有的Verilog语句都是可以综合成逻辑单元的,例如时延语句。所以为了方便验证加的时延,一般都写成宏,方便后
2022-07-14 10:07:34 515
原创 Verilog语言-Quartus II 错误解决
原因:test bench文件里面有下列语句: $finish ;(表示时间到达1000ns就停止仿真)注意:选择否,才能保持仿真软件打开看波形,选择是会关闭软件。解决:test bench加上设计文件的引用3、Error (12007): Top-level design entity “xxx” is undefinedtop module 名字一定要和 project 名字一致,否则会报错破解时,记得先关闭软件,再破解,就不会出现这个错了(1)、菜单栏Tools -> Options ->Ge
2022-07-04 11:34:41 4318
原创 Verilog语言- 和c语言的区别
1、Verilog基础x 或 X:未知z 或 Z:高阻(Z 常见于信号(input, reg)没有驱动时的逻辑结果。例如一个 pad 的 input 呈现高阻状态时,其逻辑值和上下拉的状态有关系。上拉则逻辑值为 1,下拉则为 0 。)减号放在基数和数字之间是非法的,例如下面的表示方法是错误的:4’d-2 //非法说明2 种数据类型就是线网(wire)与寄存器(reg)always块里赋值对象不能是wire型无符号数乘法时,结果变量位宽应该为 2 个操作数位宽之和。逻辑相等/
2022-05-31 11:19:48 2784
原创 Verilog语言-Quartus II 仿真环境学习
1、基础环境搭建参照 菜鸟教程我这里安装版本是13.1安装破解教程参照 破解方法2、问题解决2.1、Error (12007): Top-level design entity “Counter10” is undefined原因:project名叫counter10,top module名字是Counter10,名字不统一。解决办法:top module 名字一定要和 project 名字一致,否则会报错。2.2、Error: Current license file does not s
2022-05-30 14:35:34 2099 2
原创 芯片验证基础需要什么?
1、Linux系统1.1、常用命令1.2、vim编辑器2、语言2.1、有SystemVerilog基础 SystemVerilog结合了来自 Verilog、VHDL、C++的概念,还有验证平台语言和断言语言,也就是说,它将硬件描述语言(HDL)与现代的高层级验证语言(HVL)结合了起来。 拥有芯片设计及验证工程师所需的全部结构,它集成了面向对象编程、动态线程和线程间通信等特性,作为一种工业标准语言,SV全面综合了RTL设计、测试平台、断言和覆盖率,为系统级的设计及验证提供强大的支持
2022-05-30 10:47:32 1987
原创 Visual studio 2019 桌面应用开发(1)
1、安装条件原本我的系统是win10 企业版 LTSC,官方给出的安装条件恰好不支持。visual studio 2019系统要求尝试安装,老是弹出警告,没管,连软件都打不开,闪退报错百度了一堆解决办法,都没用,说明我的系统真的不支持,那就重装系统吧!随便找了个一键重装 windows 10教育版的软件,结果装到一半死机了,哎!所以还是要u盘启动比较保险。终于,安装好win10教育版了2、visual studio安装点官网下载 2019 社区版双击安装,安装步骤可以百度,记得修改到D盘,
2022-05-25 15:59:33 3050
原创 学习转载分享
一、嵌入式系统二、SPI读取外部flash时序图三、STM32驱动W24Q16四、SYSCLK时钟源三个来源:HSI RC、HSE OSC、PLL
2022-05-11 11:08:38 95
原创 学习链接整理
1、嵌入式教程嵌入式教程CISC:复杂指令集计算机RISC:精简指令集计算机基于RISC的系统通常比CISC系统速度快。1、嵌入式微控制器(Embedded Microcontroller Unit,EMCU)2、嵌入式微处理器(Embedded Microprocessor Unit,EMPU)3、嵌入式数字信号处理器(Embedded Digital Signal Processor,EDSP)4、嵌入式片上系统(Embedded System on Chip,ESOC)内存管理单元
2022-05-11 11:07:24 196
原创 FreeROTS了解(四)
1、实时操作系统(1)、硬实时:准时(2)、软实时:尽快完成1.1、名词解释应用程序是一个无限循环,无限循环里的操作可被看成后台行为(任务级别)。中断处理异步事件,可被看成前台行为(中断级),时间相关性强的操作一定是靠中断服务来保证的。中断提供信息,后台程序运行到处理该信息时才会得到处理,任务响应时间。临界区时任何都不能打断,进入临界区之前必须关闭中断,临界区执行完后要立即开中断。任何被任务占用的实体都称为资源。互斥就是为了更好的让每个任务独占共享资源。多任务让程序模块化,层次化,易于设
2022-05-11 10:24:13 397
原创 UART波形分析
1、逻辑分析仪解码配置波特率:96002、逻辑分析仪结果3、波特率计算1除以9600,结果如下(e-4表示10的负4次方)表示 0.00010416秒 = 104.16 微秒找到发送1位数据的宽度,例如下图,结果恰好是104 us,说明波特率是些许误差(9615)...
2022-02-25 15:29:27 1139
原创 批处理.bat文件学习
1、方法用记事本把后缀名.txt改成.bat,怎么运行EXE程序?把路径什么的都找到,和在dos下执行文件一样写到.bat文件里。(注意:不是.dat,不然双击运行不了)2、命令(1)echo on :显示命令回显打开记事本,输入命令,保存为.bat后缀文件双击运行.bat文件运行结果如下,命令回显即会显示所有命令:(2)echo off :关闭回显修改.bat文件为以下内容运行结果如下,只会显示运行结果,不会显示命令:(3)@echo off :本行命令也会隐藏加上@后的运行
2021-10-20 20:17:41 470
原创 Markdocs导出Word文件配置
一、环境暂时在WIN10系统实现,WIN7也可以试试二、安装 typora 软件安装包下载网站:https://www.typora.io/#windows直接双击,一直下一步安装。三、配置支持导出 Word 格式压缩包 pandoc-2.14.1-windows-x86_64.zip。点开下载:https://github.com/jgm/pandoc/releases解压到当前文件夹,得到 pandoc-2.14.1 文件夹(里面包含 pandoc.exe),将其整个放入任意目录打开 T
2021-08-12 11:19:43 271
原创 Keil5打包库文件
一、软件安装1、官网 https://www.keil.com/ 下载 MDK-Arm 软件,安装。2、搜索芯片型号,找到对应的芯片包下载安装。二、 新建工程注意:工程所在目录不能有中文1、先新建一个工程文件夹2、Project - New uVsion Project ,进入新建文件夹内,给工程文件命名,保存2、选择自己需要的芯片3、接下来的配置界面,可以直接退出4、鼠标选中,再点一下,可重命名 group 名5、重命名为 user 后,右击导入已存在的文件,或者新建文件保存到工
2021-08-06 14:44:52 2839
原创 JLINK 驱动 V7.00a 更新导致JLINK V9无法使用问题解决
1、问题描述1、电脑已安装 JLINK 驱动 6.32f 版本,原始 IAR 编译器可使用 JLINK V9 正常调试。2、现另一编译器需用到 JLINK V11,故又安装了 JLINK 驱动 7.00a 版本。(安装时 7.00a 时全部默认配置,这会导致之前的编译器JLINK不能用,后面会说明解决方法)2、导致问题IAR使用 JLINK V9时,每一次下载前均会提示下面选框。查了一下,大概是说当前的驱动 和 JLINK型号不匹配。一个警告而已,先叉掉,继续调试。问题来了,程序可以稳定运行几
2021-07-21 20:05:51 10435 5
原创 I2S音频接口的理解
1、位时钟(BCLK):又名SCK,对应每一位(bit)数据,都有一个脉冲。BCLK = 2 * 采样频率 * 量化位数2、采样频率:等于LRCK。一般音频使用16K。3、LRCK:用于切换左右声道的数据。一般,1表示左声道,0表示右声道。4、MCLK:主时钟,一般是采样频率的128、或256、或384或512倍。6、...
2021-04-22 11:03:12 20422 1
原创 FLASH学习(一)
1、简介操作FLASH,常使用的是单线和4线模式两种,单线模式用于初始化FLASH,四线模式用于擦除、读写FLASH。FLASH封装大多使用的也是SOP8,即8个引出脚。通常原理图如下:2、FLASH初始化一般初始化的流程如下:先发送0xb9(power dowm)再发送0xab(release power down)再发送0x66+0x99(reset)读写状态寄存器(0x05+0x35)3、波形分析(一)、单线模式单线模式,通常也分只发送,先发送后接收两种情况。只发送控制命
2021-04-01 16:06:50 4864
转载 存储器
存储器分类1.按存储介质分(1)半导体存储器:用半导体器件组成的存储器。U盘是半导体存储器,U盘内集成的是Flash芯片,存储介质为半导体。(2)磁表面存储器:用磁性材料做成的存储器。2.按存储方式分(1)随机存储器:任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关。(2)顺序存储器:只能按某种顺序来存取,存取时间和存储单元的物理位置有关。3.按存储器的读写功能分(1)只读存储器(ROM):存储的内容是固定不变的,只能读出而不能写入的半导体存储器。(2)随机读写存储器(
2021-02-18 23:27:55 986
原创 OV3640-VGA预览初始化寄存器配置
1、寄存器初始化配置说明:VGA大小(640*480)、YUV422格式(YVYU顺序)、15fpsstatic uint16_t ov3640_15fps_VGA[][2] = { /*{0x3012, 0x80},复位需要延时一段时间*/ {0x304d, 0x45}, {0x30a7, 0x5e}, {0x3087, 0x16}, {0x309c, 0x1a}, {0x30a2, 0xe4}, {0x30aa, 0x42}, {0x30b0, 0xff}, {0x30b1, 0x
2021-01-13 19:55:57 420
原创 STM32F4_V1.25.0固件库应用于STM32F407ZGT6(三)- 分析摄像头OV3640图像波形
一、摄像头极性配置下列是OV3640数据手册给出的说明Data valid VSYNC high0x3600[2] Control VSYNC polarity1: Data valid VSYNC High //数据在VSYNC High 高电平时有效0: Data valid VSYNC low //数据在VSYNC low 低电平时有效0x3600[3] Control HREF polarity0: Data valid HREF high
2021-01-11 17:00:07 690
原创 STM32F4_V1.25.0固件库应用于STM32F407ZGT6(二)- 调试摄像头OV3640的IIC通路
一、软件、硬件接着上一篇博客的工程基础STM32F4_V1.25.0固件库应用于STM32F407ZGT6(一)二、硬件连接唠叨几句,购买了一个在卡片电脑上专用的摄像头模块,排针和我的板子camara卡槽匹配不上,只能飞线。长下面这个样子,CAMERA是卡槽接口,背面有个CAMERB是插针。商家只管卖,连个原理图都没有,板子上引脚名称也没有,询问商家的回复是这摄像头为某某板子专用,他们也没有原理图。网上查了那些板子camera接口的原理图,才知道摄像头上的三角符号一端要板子上三角符号对应。好吧,
2020-12-18 17:46:15 806 3
原创 STM32F4_V1.25.0固件库应用于STM32F407ZGT6(一)
一、软件、硬件软件:IAR8.30.1硬件:J-LINK、霸天虎V1板二、STM32F4_V1.25.0固件库下载网址:STM32F4_V1.25.0固件库下载网址三、步骤1、找到工程STM32Cube_FW_F4_V1.25.0\Projects\STM32F4-Discovery\Examples\UART\UART_TwoBoards_ComPolling\EWARM双击打开工程,修改代码(1)保留下列几行代码,其余删除int main(void){ HAL_Init()
2020-11-10 12:00:00 1804
原创 C语言语法-补充
1、在变量前加(void)强转sys_msg_key_data_t *key_msg;(void)(key_msg);这只是一种防止编译器编译时报警告的用法。有些变量如果未曾使用,在编译时是会报错,从而有些导致编译不过,所以才会出现这种用法。而此语句在代码中没有具体意义,只是告诉编译器该变量已经使用了。2、#pragma pack(1)使用编译器将结构体数据强制连续排列,例如下列代码#pragma pack(1)struct s { char ch; int i;};#
2020-10-12 19:58:02 223 1
原创 FreeROTS了解(三)
1、中断(1)先优先级分组。3位作为抢占优先级,1位作为子优先级。0-7是抢占优先级的数值,0-1是子优先级的数值。NVIC_SetPriorityGrouping(4);(2)再编码优先级pri0 = NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 4, 0);(3)再设置中断任务的优先级。IRQn表示中断号,由MCU决定。pri0 值域 0~15 根据前述分组,决定哪些位是抢占优先级,哪些位是子优先级。数值越低,优先级越高NVIC_SetPri
2020-10-12 19:51:51 841
原创 生活是自己的,本来也没有很多观众
可可西里_x_back的由来:可可西里是我很喜欢的一部电影,悲剧,很希望不是根据事实改变的电影。后来,以“向死而生”努力生活。我荣幸在迷茫的时候,大二成为x_back努力努力再努力-,坚持比努力可怕,是从大二以来一直陪伴自己的座右铭。今年,他宣布开娱乐公司,对自己的冲击还是很大的。感叹同样是24岁,怎么差别就这么大呢?5年前,他就已经把后十年的所有事情规划得很清楚,一步步实现,还超出大家的想象。30而立,提前一年当总裁,这小说情节现实版。我的24岁在干嘛?好吧!比不了。重要的是那句话,以
2020-10-12 19:22:27 303
原创 FreeROTS了解(二)
1、定时器#define LIGHT_COLOR_KEEP_TIME (50)light_timer = xTimerCreate("light_ch_color", pdMS_TO_TICKS(LIGHT_COLOR_KEEP_TIME), pdTRUE, (void *)0, light_change_color_callback);pdMS_TO_TICKS(LIGHT_COLOR_KEEP_TIME):定时溢出周期, 单位是任务节拍数。pdMS_TO_TICKS用于将指定的毫秒时间转化为相
2020-10-12 16:47:05 1143 1
原创 I2C-双向二线制同步串线总线-IIC-详细理解整理
1、简介I2C总线是由Philips(飞利浦)公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。SDA(串行数据线) ----> 双向 I/O 线,需通过上拉电阻接电源VCC。SCL (串行时钟线) ----> 总线空闲时,两根线都是高电平。每个连到总线的器件都有 唯一的地址。I2C总线是一个多 master 总线,通过仲裁防止数据破坏,但同一时刻只允许有一个 master 。
2020-10-12 16:15:35 6002
原创 IAR7.1-IAR8.3编译错误
IAR7.10.1编译错误1、Error[Pe020]: identifier “xxx” is undefined(1)把xxx的定义,放在了使用它的语句下面,引起的错误。良好的编程习惯是,如果变量的定义和使用处于同一文件,就要先定义后使用,且定义语句要放在使用的前面。所以最好将定义放在头文件里,再引用头文件即可。(2)没有引用相关头文件(3)真的没有定义(4)定义在其他c文件时,要用extern定义2、Error[Pe247]: variable “cx20921” has already
2020-10-09 16:02:43 10329 1
原创 FreeRTOS了解(一)
FreeRTOS系列第1篇—为什么选择FreeRTOS?注:以下部分内容摘自上述博客,仅摘要学习。1、FreeROTS的作用RTOS只是在处理实际任务时才会运行,这能够更合理的利用CPU。在实际项目中,如果程序等待一个超时事件,传统的无RTOS情况下,要么在原地一直等待而不能执行其它任务,要么使用复杂(相对RTOS提供的任务机制而言)的状态机机制。如果使用RTOS,则可以很方便的将当前任务阻塞在该事件下,然后自动去执行别的任务,这显然更方便,并且可以高效的利用CPU。典型的,像中断优先级、任务堆栈
2020-10-09 14:07:13 1338
原创 开始自己的笔记之旅
踏入嵌入式这个行业,也快半年了,现在作为小小的程序员,经验不多,但也很珍惜学到的所有东西,所以今天开始,就记录一些自己的经验和知识,有写得不好的地方,希望读者见谅。...
2019-11-18 11:17:33 131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人