草庐IT

STM32CubeMX配置ADC采样(轮询、中断、DMA)

STM32CubeMX能够极大减小STM32外设配置的工作量,因此作者也借助空闲时间对STM32CubeMX相关配置进行了学习,本文介绍如何利用STM32CubeMX配置ADC采样,记录了作者学习过程中遇到的问题及解决办法,使大家少走弯路,并方便以后复习目录1、单通道轮询2、单通道中断3、单通道DMA4、多通道轮询5、多通道中断6、多通道DMA1、单通道轮询先选择所使用的MCU,这里我使用的是STM32F407ZGT系列修改一下DEBUG功能,否则后续无法调试修改时钟,采用外部晶振配置一串口,用于打印采集的ADC值这里我采用ADC1的通道0,并开启连续采样模式,否则每次开启ADC采样后只进行一

MicroBlaze系列教程(6):AXI_IIC的使用(24C04 EEPROM)

文章目录@[toc]AXI_IIC简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是XilinxMicroBlaze系列教程的第6篇文章。AXI_IIC简介一般情况下,使用FPGA实现I2C协议主要有两种方式:一种是基于Verilog实现起始位、停止位、ACK产生和判断、数据的发送和接收,通常SDA设计成双向端口,配合I2C模型对设计的模块进行仿真验证。还有一种是基于软核处理器配合GPIO,通过模拟I2C时序的方式来实现。Xilinx提供了标准AXI总线的I2CIP核,只需要调用封装好的API函数,即可以实现对标准I2C器件的驱动,非常方便。AXIIIC,支持Phi

DMA Handshaking Interface学习

OverviewofHandshakingInterface握手接口是在transactionlevel使用的,只在和非内存外设进行数据传输时有该层,和内存外设进行数据交换时没有握手接口也没有transactionlevel。DMATransferHierarchyforNon-MemoryPeripheralsDMATransferHierarchyforMemoryPeripherals 握手接口分为硬件握手和软件握手,软件握手是通过内存映射的寄存器来完成的,硬件则是通过专用的握手接口来完成的。HardwareHandshakingdma_req-从外设输入的突发事务(bursttrans

基于STM32F103C8T6四路AD采集数据显示在oled屏上非DMA传输方式(附百度网盘下载链接)

本文采用四路AD采集光照强度、烟雾浓度、一氧化碳、空气质量等四个物理量,并采用中位值平均滤波(防脉冲干扰平均滤波法)算法对偶然出现的脉冲性干扰,消除由其引起的采样值偏差。ADC简介STM32F103C8T6有两个ADC,12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐的方式存储在16位数据寄存器中。主要用到的ADC参数和函数voidADC1_Init(void){GPIO_InitTypeDefGPIO_InitStructure;ADC_InitTypeDef

AXI-Stream 学习笔记

参考https://wuzhikai.blog.csdn.net/article/details/121326701https://zhuanlan.zhihu.com/p/152283168AXI4介绍AXI4是ARM公司提出的一种片内总线,描述了主从设备之间的数据传输方式。主要有AXI4_LITE、AXI4_FULL、AXI4_STREAM三种。AXI4_LITE:不支持突发传输,一般用于小数据量的IP初始化和嵌入式设备数据传输。AXI4_FULL:可称为AXI4,支持突发传输,突发长度为1~256。AXI4_STREAM:流数据,丢弃了地址项,用于高速数据传输。AXI-Stream顾名思

AXI 协议中的“对齐”与“非对齐”访问

1.对齐传输:在实际硬件中,一个寄存器一般是存储8位数据,所以对于一笔32位的数据,就需要4个寄存器来存储,因此这笔32位的数据的地址需要以0X00,0X04,0X08···这样使用,也就是所谓的地址对齐2.非对齐传输AHB总线只支持对齐传输,而AXI协议支持地址的非对齐传输(且burst类型为wrap的不支持)。非对齐传输也就是所谓的可以访问的地址不需要以上例中0X00,0X04,0X08···这样使用。在第一笔数据的传输时,如果首地址不是对齐的,那么主设备会在第一笔传输中对数据进行填充,直到首次传输填充至地址对齐,然后,再用WSTRB信号将填充的数据标记为无效。以访问(32位数据)地址为0

on-chip-bus(四)AXI总线:突发长度、突发大小以及非对齐传输的理解

1.突发长度、突发大小突发长度(burstlength):指在一次突发传输中进行的数据传输次数,用AxLEN字段标识。由于标识值是从0开始的,实际的突发长度应为标识值+1,即突发长度=AxLEN+1.突发大小(burstsize):指突发传输中的每次数据传输的字节数,用AxSIZE字段标示。突发大小=2^AxSIZE2.非对齐传输(UnalignedTransfer)    首先需要理解地址的对齐传输:在ARM的32bit的地址总线中,其最低两位[1:0]=0,所以从第三位开始,地址也就是4的倍数,如0x00,0x04,0x08等,都是对齐的。    AHB总线只支持对齐传输,而AXI协议支持

STM32的DMA中FIFO和突发模式理解

STM32的DMA中FIFO和突发模式理解学习stm32DMA时遇到了FIFO和突发配置的疑惑,看手册完全云里雾里,节拍是什么等等都不清楚。首先理解什么是突发,突发传输就是两个设备进行数据传输,一个设备发数据,一个设备接收数据,或者像是CPU到内存进行读取数据,肯定是每读取一个字节,读取指针就会自增一次,如果每次读一个字节,还要到程序里面执行一个指针自增指令的话,那CPU岂不是时时刻刻都在读取内存然后指针自增指令执行,那也太蠢了,CPU利用率太低了,所以出现了突发模式,我设定为CPU进行读内存,我指定一个宽度,每次读取都读这一个宽度的数据,比如为128B,每次读取,指针会自己增加,读取满了这1

STM32配置ADC2(DMA)进行采集 DAC 输出-2

0.一定要先看上一节:STM32配置ADC2(DMA)进行采集DAC输出-21.实验目标在上一节的基础上,我们把DAC(三角波)给集成进来,实现按下按键输出三角波,通过串口发送数据给电脑,分析然后画出电压的波形并且展示出来开发板:正点原子探索者STM32F407ZG2.STM32部分1.DAC部分这里我们采用实验22-2DAC输出三角波实验的例程,查看主函数找中和DAC相关的代码,发现下图红框中的函数只出现在了DAC.c中,于是我们将DAC.c添加到上一节的项目中,此时还不够,因为我们采用的是HAL库编程,还需要引入官方提供的和DAC相关的库函数才可以使用。全部添加完成后,文件结构如下图所示此

AXI4协议学习:架构、信号定义、工作时序和握手机制

目录1AXI是什么?2AXI怎么工作?3AXI协议3.1架构3.1.1通道定义3.1.2接口与互连(interconnect)3.1.3Registerslices3.2基本事务3.2.1突发读示例3.2.2重叠突发读示例3.2.3突发写示例3.2.4事务顺序3.3额外的功能4信号定义4.1全局信号4.2写地址通道信号4.3写数据通道信号4.4写响应通道信号4.5读地址通道信号4.6读数据通道信号4.7低功耗接口信号4.8字段定义的简单说明:4.9AXI-Lite与AXI-stream的接口5通道握手机制5.1握手过程5.2通道之间的关系5.3通道握手信号之间的依赖关系6AXI4相关文件7需要