analog

用CubeMX开发HAL学习记录(一)

痴心易碎 提交于 2021-02-14 15:31:43
用CubeMX开发HAL学习记录(一) 前言 一、CubeMX基本特点 1、集成MCU Finder功能,便于用户进行芯片选型 2、图形化方式配置时钟、片内外设,自动生成初始化代码 3、具有强大的适应性 4、提高开发效率 二、CubeMX下载 1.CubeMX软件下载 2.安装环境 3.注意事项 4.固件包导入 三、CubeMX生成文件介绍 1.MCU固件包 2.界面介绍 3.常规配置 总结 前言 笔者还是一名大二学生,目前正在学习CubeMX的开发,自己想通过写博客来加深自己的学习印象,如有不妥请指正。 一、CubeMX基本特点 1、集成MCU Finder功能,便于用户进行芯片选型 STM的芯片种类众多引脚封装也不尽相同,用户可以更具自己需要的内核,引脚封装类型和开发型号选择自己所需要的那一款MCU。 2、图形化方式配置时钟、片内外设,自动生成初始化代码 STM的时钟树都十分庞大且复杂,不同的外设对应着不同的时钟源,因此对照技术手册一面面的寻找总线,和时钟倍频设置是十分复杂的,而CubeMX可以直接越过这些基础操作,只对逻辑层进行编辑,极大的节省了时间成本。但不需要配置寄存器或库函数不代表你不需要去了解时钟树,学习STM的人必须先经过时钟树的洗礼(本文建议结合CubeMX的时钟树和B站正点原子的时钟树对比学习) B站原子哥时钟树:https://www.bilibili.com

[MicroPython]TurnipBit开发板旋转按钮控制直流电机转速

南笙酒味 提交于 2021-02-11 16:04:13
1.实验目的: 学习在PC机系统中扩展简单I/O 接口的方法 学习TurnipBit拼插编程 了解直流电机的工作原理 学习L298N的工作原理 学习TurnipBit扩展板L298N和按键模块的接线方式 2.所需原器件: TurnipBit一块 TurnioBit扩展板一块 杜邦线若干 usb数据线一条 按键模块一个 直流电机一个 L298N电机驱动模块一个 3.实验原理: L298N是一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46v,输出电流大,瞬间峰值电流可达3A,持续工作电流为2A,额定功率25w。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电机和步进电机,继电器线圈等感性负载。采用标准逻辑电平信号控制,具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作,可外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可驱动一台两相步进电机或四相步进电机,也可驱动两台直流电机。 4.接线方法: TurnipBit扩展板与发光二极管接口对应如下表:SFDA DDSEA 5. 源代码: 通过TurnipBit可视化编程编写代码 打开TurnipBit可视化编程地址http://www.turnipbit.com 可视化编程: 源代码:

IC设计流程之实现篇——全定制设计

喜你入骨 提交于 2021-02-10 15:30:00
要谈IC设计的流程,首先得搞清楚IC和IC设计的分类。 集成电路芯片从用途上可以分为两大类: 通用IC (如CPU、DRAM/SRAM、接口芯片等)和 专用IC(ASIC) (Application Specific Integrated Circuit),ASIC是特定用途的IC。从结构上可以分为 数字IC、模拟IC和数模混合IC 三种,而SOC(System On Chip,从属于数模混合IC)则会成为IC设计的主流。从实现方法上IC设计又可以分为三种, 全定制(full custom)、半定制(Semi-custom)和基于可编程器件的IC设计 。全定制设计方法是指基于晶体管级,所有器件和互连版图都用手工生成的设计方法,这种方法比较适合大批量生产、要求集成度高、速度快、面积小、功耗低的通用IC或ASIC。基于门阵列(gate-array)和标准单元(standard-cell)的半定制设计由于其成本低、周期短、芯片利用率低而适合于小批量、速度快的芯片。最后一种IC设计方向,则是基于PLD或FPGA器件的IC设计模式,是一种“快速原型设计”,因其易用性和可编程性受到对IC制造工艺不甚熟悉的系统集成用户的欢迎,最大的特点就是只需懂得硬件描述语言就可以使用EDA工具写入芯片功能。 从采用的工艺可以分成双极型(bipolar),MOS和其他的特殊工艺 。硅(Si

【STM32H7教程】第44章 STM32H7的ADC基础知识和HAL库API

无人久伴 提交于 2021-02-10 06:31:31
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第44章 STM32H7的ADC基础知识和HAL库API 本章节为大家讲解ADC(Analog-to-digital converters,模数转换器),极具项目使用价值,因为STM32H7的ADC已经高达16位分辨率,支持3.6Msps采样率。 44.1 初学者重要提示 44.2 ADC基础知识 44.3 ADC的HAL库用法 44.4 源文件stm32h7xx_hal_adc.c 44.5 总结 44.1 初学者重要提示 STM32H7虽然支持差分,但不支持负压测量。 STM32H7的ADC采集通道体验快速通道Fast Channels和低速通道Slow Channels的区别,详情看本章2.12小节的电气特性。 STM32H7的ADC支持过采样,通过过采样技术可以做到26位分辨率。 ADC的专业术语诠释文档,推荐大家看看: http://www.armbbs.cn/forum.php?mod=viewthread&tid=89414 。 44.2 ADC基础知识 ADC的几个关键知识点放在开头说: STM32H7支持三路ADC,分别是ADC1,ADC2和ADC3。其中ADC1和ADC2可以组成双ADC模式,ADC3是独立的

STM32CubeMX+ADC数据采集

佐手、 提交于 2021-01-13 05:39:23
设计对电池电压进行检测的应用程序 STM32理解: https://blog.csdn.net/u010893262/article/details/68942710 一、ADC(Analog-to-Digital Converter)模数转换器 模拟信号----->数字信号 二、ADC外设的工作参数配置 二、ADC外设的工作参数配置 三、配置USART外设的工作参数 四、生成代码 在main.c文件中设置所需变量 /* USER CODE BEGIN PV */ // ADC转换值存放 uint16_t adc_value = 0 ; // 电压值 float voltage = 0.0 ; // 电压值结果显示 char voltString[ 50 ] = { 0 }; /* USER CODE END PV */ 在while循环里 while ( 1 ) { // 启动ADC转换 HAL_ADC_Start(& hadc1); // 等待转换完成,第二个参数表示超时时间,单位ms HAL_ADC_PollForConversion(&hadc1, 100 ); // 为换取ADC状态 adc_value = HAL_ADC_GetValue(& hadc1); // 采取的右对齐除以2的12次方,参考电压为3.3V voltage = ( float )adc_value

基于创龙科技Zynq-7045、Zynq-7100平台 | AD9361+ ZYNQ软件无线电平台搭建实例

一曲冷凌霜 提交于 2020-12-16 16:56:25
目 录 1 硬件平台 1.1 Zynq-7045/Zynq-7100评估板 1.2 AD9361软件无线电模块 2 案例演示 2.1 开发环境 2.2 案例功能 2.3 案例测试 2.3.1 QSPK数字调试测试 2.3.2 FM收音测试 1 硬件平台 1.1 Zynq-7045/Zynq -7100 评估板 创龙科技 (Tronlong) 基于Xilinx Zynq-7000系列XC7Z045/XC7Z100高性能处理器设计的高端异构多核SoC评估板TLZ7xH-EVM,处理器集成PS端双核ARM Cortex-A9 + PL端Kintex-7架构28nm可编程逻辑资源,评估板由核心板与底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 TLZ7xH-EVM评估板接口资源丰富,引出双路千兆网口、四路SFP+光口、双路CameraLink、HDMI、FMC、PCIe、USB、Micro SD等接口,方便用户快速进行产品方案评估与技术预研。 图 2 TLZ7xH-EVM评估板 产品资料(用户手册、核心板硬件资料、产品规格书): http://site.tronlong.com/pfdownload 1.2 AD9361软件无线电模块 图 4 AD9361软件无线电模块(AD-FMCOMMS3-EBZ) (1) 芯片介绍

stm32mp157 Cortex M4开发篇:通过GPIO点亮LED灯详解

人盡茶涼 提交于 2020-11-26 13:13:07
写在前面: 本文章为《STM32MP1系列教程之Cortex-M4开发篇》系列中的一篇,全系列总计11篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板)。针对该开发平台,后续会陆续出更多系列教程,包括Cortex-A7开发篇、Cortex-M4开发篇、Linux应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、项目实战篇等。欢迎关注,更多stm32mp157开发教程及视频,可加技术交流Q群459754978,感谢关注。 FS-MP1A开发板详情介绍:https://item.taobao.com/item.htm?id=622457259672 第 1 章 Cortex-M4 GPIO编程 1.1 实验目的 熟悉STM32CubeIDE工具软件的使用。 掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。 学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口控制LED。 1.2 实验环境 FS_MP1A开发平台 ST-Link仿真器 STM32CubeIDE开发软件 PC机 XP、Window7/10 (32/64bit) 1.3 实验原理 只要是对硬件操作,就要首先查看原理图。查看外设是和模块的MCU的哪个引脚相连。FS_MP1A开发平台上的LED的亮灭状态

FPGA产生2FSK信号(1)

邮差的信 提交于 2020-11-21 13:28:29
目录 FPGA产生2FSK信号(1) 一、2FSK介绍 1、相干解调: 2、非相干解调 二、FPGA生成2FSK方法 1、正弦ROM表产生 (1)生成mif文件 (2)生成rom IP核并导入mif文件 (3)生成计数器 (4)计数器和rom整合 2、数字基带控制正弦ROM表 3、Modelsim仿真验证 开发环境: FPGA: cyclone iii 软件:quartus ii13.1+modelsim,matlab2016b 语言:Verilog HDL 一、2FSK介绍 FSK 是信息传输中使用得较早的一种调制方式,它的主要优点是:实现起来较容易,抗噪声与抗衰减的性能较好。国际电信联盟( ITU )建议在传输速率低于 1200b/s 时采用 2FSK 体制,其在中低速数据传输中得到了广泛的应用。所谓 FSK 就是用数字信号去调制载波的频率。 调制方法: 2FSK 可看作是两个不同载波频率的 ASK 已调信号之和。 解调方法:相干法和非相干法。 2FSK示意图 1 、相干解调: 相干解调 2 、非相干解调 过零检测 包络检波 二、FPGA生成2FSK方法 如图所示,2FSK产生的方案,利用基带信号控制DA的ROM表,从而实现FSK调试。 FPGA生成2FSK方案框图 1、正弦ROM表产生 下面详细讲解下如何生成ROM表。 正弦ROM表应该有这样的功能:输入时钟信号,输出幅度值

基于FPGA的MCP4725驱动程序

做~自己de王妃 提交于 2020-11-10 11:49:07
基于FPGA的MCP4725驱动程序 芯片资料 MCP4725是低功耗、高精度、单通道的12位缓冲电压输出数模转换器(Digital-to-Analog Convertor,DAC),具有非易失性存储器(EEPROM)。用户可以使用I2C接口命令将DAC输入和配置数据烧写到非易失性存储器(EEPROM)。非易失性存储器功能使得DAC器件在断电期间仍能保持DAC输入代码,且DAC输出在上电后立即可用。 图1.MCP4725功能框图 MCP4725具有外部A0地址位选择引脚。此A0引脚可连接用户应用电路板的VDD或VSS。MCP4725具有2线型IIC兼容串行接口,可用于标准(100 kHz)、快速(400 kHz)或高速(3.4 MHz)模式。 Vout:模拟输出电压; Vss:参考地; VDD:电源电压;3.7~5.5V SDA:IIC串行数据; SCL:IIC串行时钟输入 A0:地址位选择引脚;该引脚可连接到VSS或VDD ,或由数字逻辑电平有效驱动。该引脚的逻辑状态决定了I2 C地址位的A0位。 2. 输出电压计算 例如当我们输入0x400,即十进制数1024,电源电压接入为5V,那么输出电压Vout=5*1024/4096=1.25V。 3. 工作原理 当器件连接到I2C总线时,器件作为从器件工作。使用I2C接口命令,主器件可以读/写DAC输入寄存器或EEPROM

单片机外围模块漫谈之二,如何提高ADC转换精度

北战南征 提交于 2020-11-04 06:54:58
在此我们简要总结一下ADC的各种指标如何理解,以及从硬件到软件都有哪些可以采用的手段来提高ADC的转换精度。 1. ADC指标 除了分辨率,速度,输入范围这些基本指标外,衡量一个ADC好坏通常会用到以下这些指标:失调误差,增益误差 , 微分非线性,积分非线性,信噪比,信纳比,有效位数,总谐波失真。让我们以下图为例来看一下这些指标的意义。 LSB 参数中经常用LSB作为单位,比如说差分非线性为2 LSB。这究竟是多大一个值呢?为了简单起见,我们以一个3b it 分辨率,满量程为5V的ADC为例。1个LSB对应的电压大小为5 V /7=714 m V。如果是8 bit 分辨率,那么1个LSB对应5/255=19mV 。 图中横轴为输入电压Vin增长方向,纵轴为数字输出。理想情况下输入电压每增长1LSB( 714mV), 那么输出会向上跳变一次,对应虚线L1所在转换曲线。但实际电路往往会引入偏差,转换曲线往往如 L 2 所对应曲线。 失调误差(O ffset Error) 电压从0开始增大时,引起输出第一次跳变的电压值,与理论上应该引起第一次跳变的电压值( 0.5 LSB) 的差值。衡量小电压时的转换精度。如图中,理论上应该在0.5 LSB处跳变,实际电压增大到1 LSB时才跳变,所以Offset Error是 1 –0.5 = 0.5 LSB。 增益误差(O ffset Error)