控制寄存器

PCM data flow - 3 - ASoC codec driver

怎甘沉沦 提交于 2020-01-26 08:36:43
上一章提到codec_drv的几个组成部分,下面逐一介绍,基本是以内核文档Documentation/sound/alsa/soc/codec.txt中的内容为脉络来分析的。codec的作用,在概述中有说明,本章主要罗列下codec driver中重要的数据结构及注册流程。 Codec DAI and PCM configuration codec_dai和pcm配置信息通过结构体snd_soc_dai_driver描述,包括dai的能力描述和操作接口,snd_soc_dai_driver最终会被注册到asoc-core中。 /* * Digital Audio Interface Driver. * * Describes the Digital Audio Interface in terms of its ALSA, DAI and AC97 * operations and capabilities. Codec and platform drivers will register this * structure for every DAI they have. * This structure covers the clocking, formating and ALSA operations for each * interface. */ struct snd

GPIO及基本打通原理

寵の児 提交于 2020-01-26 07:44:07
GPIO及基本打通原理 底层驱动 I/O接口 通用IO(GPIO) GPIO输入引脚连接方式 带上拉电阻的连接 带下拉电阻的连接 “悬空”连接 GPIO输出引脚 KL25芯片 KL25芯片(80引脚封装) GPIO模块 GPIO基本编程步骤与基本打通程序 编程实例 底层驱动 指如何通过程序直接干预硬件。 I/O接口 即输入/输出接口,是MCU与外界进行交互的重要桥梁,MCU与外界的数据交换都需要通过I/O接口实现。 实质是一种电子电路,由内部若干专用寄存器和逻辑控制电路构成。 通用IO(GPIO) 是I/O的基本形式。一般情况下,使用正逻辑,规定高电平状态对应数字信号"1",低电平状态对应数字信号“0”。 当引脚作为通用输入时,MCU可以通过端口寄存器获取引脚的状态,反之,当引脚作为输出时,MCU可以通过内部寄存器控制引脚的输出状态。 GPIO输入引脚连接方式 带上拉电阻的连接 通过一个电阻连接到电源(VCC),可以设置引脚初始电平为高电平。 带下拉电阻的连接 通过一个电阻连接到地(GND)上,可以设置引脚初始电平为低电平。 “悬空”连接 一般不使用。 GPIO输出引脚 通过MCU内部程序控制引脚输出为高电平或低电平。 输出引脚O1和O2采样不同方式驱动外部器件,不同驱动电路,电流要求不同,采样不同接法。 图中当O1引脚输出为低电平时,LED点亮。 当O2引脚输出为高电平时

乘法器的优化1

人走茶凉 提交于 2020-01-24 03:18:49
计算机的最大优势在于它的运算速度。因此,当我们设计计算机当中的一个功能部件时,在保证其功能正确性的前提下,就得考虑它是否拥有足够好的性能。那么在这一节,我们就要一起对这个乘法器进行性能上的分析和优化。 首先,我们来快速回顾一下N位乘法器的工作流程。 当我们做好初始化工作之后,首先检查乘数寄存器的最低位。如果最低位为1,那么就将被乘数寄存器和乘积寄存器的内容相加,并将结果放入到乘积寄存器当中。那么这一步实际上是控制逻辑给出了若干个控制信号,包括让加法器完成加法运算,并给了乘积寄存器写入的控制信号。因为加法器的输出是连接到乘积寄存器的输入端的,所以在下一个时钟上升沿来临的时候,乘积寄存器就会对加法器的输出进行采样并保存起来,这就完成了这一步所指的工作。 然后控制逻辑会向被乘数寄存器发出左移的控制信号,在下一个时钟上升沿来临的时候,被乘数寄存器就会完成左移一位的工作。当然,如果在第一步中检查的乘数寄存器的最低位是0,那控制逻辑就不会给出让加法器进行运算,和让乘积寄存器进行写入的控制信号,而会进入到第2步,完成被乘数寄存器左移的工作。再到下一个时钟上升沿,乘数寄存器会发现其右移的控制信号有效,所以它就完成一次右移的工作。 然后判断是否已经到了第N次循环。如果没有,说明运算还没有结束,再回到第1步继续执行;如果发现已经是第N次循环,说明运算已经完成。运算的结果就在当前的乘积寄存器当中。

保护模式 x86 控制寄存器

有些话、适合烂在心里 提交于 2020-01-23 02:01:41
控制寄存器 目录 文章目录 目录 Cr0寄存器 PE 位 [0] PG 位 [31] WP 位 [16] Cr2 寄存器 Cr4 寄存器 PAE 位 [5] PSE 位 [4] 控制寄存器用户控制和确定CPU的操作模式. Cr0 Cr1 Cr2 Cr3 Cr4 (注意跟DR0-DR7分开) Cr1 保留 Cr3 页目录表基址 Cr0寄存器 PE 位 [0] PE = Protection Enable(启用保护) PE = 1 保护模式 PE = 0 实地址模式 该标志位仅开启段级保护,而并没有启用分页机制.若要启用分页机制,那么PE和PG标志都要置位. PG 位 [31] 当设置该位时即开启了分页机制.在开启这个标志之前必须已经或者同时开启PE标志. PG = 0 且 PE = 0 处理器工作在实地址模式下. PG = 0 且PE = 1 处理器工作在没有开启分页机制的保护模式下 PG = 1 且PE = 0 该情况不存在,PE = 0 无法开启 PG PG = 1 且PE = 1 处理器工作在开启分页机制的保护模式下 WP 位 [16] 对于Intel 80486或以上的CPU,CR0的位16是写保护(Write Proctect) 标志 当设置该标志时,处理器会禁止超级用户程序(例如特权级0的程序)向用户级只读页面执行写操作; 当CPL<3的时候: 如果 WP = 0 可以

STM32103ZET6 寄存器

纵饮孤独 提交于 2020-01-20 01:35:03
STM32103ZET6每组GPIO端口有7组寄存器 每组GPIO端口的寄存器共7个 【 GPIOx_CRL :端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ODR:端口输出寄存器 GPIOx_BSRR:端口位设置/清除寄存器 GPIOx_BRR :端口位清除寄存器 GPIOx_LCKR:端口配置锁存寄存器 】 PS :每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。所有IO口都可以作为中断输入。 GPIO端口基本结构 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) 选择I/O模式 每组GPIO有16个IO口,每个IO口需要4位来控制,这4位分成两部分,每部分2位,低2 位的部分用于选择输入或输出、选择速度,高2位的部分用于选择输入或输出的模式 GPIOx_CRL用于控制低8个IO口 (例GPIOA_CRL控制PA0-PA7,GPIOx_CRH用于控制高8个IO口(例GPIOA_CRH控制PA8-PA15) 端口输入数据寄存器( GPIOx_IDR ) 读取I/O口电平 端口输出数据寄存器 ( GPIOx_ODR ) 控制I/O口输出 端口位设置/清除寄存器(GPIOx_BSRR) 间接地设置ODR来控制端口输出 端口位清除寄存器(GPIOx_BRR)

STM32 串口

对着背影说爱祢 提交于 2020-01-17 03:23:28
学习笔记 一、STM32的APB1与APB2总线及挂载到该总线的设备 APB1总线上的设备 DAC PWR BKP bxCAN USB IIC1 IIC2 UART2~ 5 TIM2~ 7 RTC WWDG IWDG SPI2/I2S SPIS/I2S APB2总线上的设备 ADC1~ 3 UART1 SPI1 TIM1 TIM8 GPIOx EXTI AFIO 如果是APB1总线上的设备则使用RCC_APB1PeriphClockCmd() 函数使能时钟; 如果是APB2总线上的设备则使用RCC_APB2PeriphClockCmd() 函数使能时钟; 二、串口设置的一般步骤 串口时钟使能, GPIO 时钟使能 串口复位 GPIO 端口模式设置 串口参数初始化 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤) 使能串口 编写中断处理函数 对于复用功能的 IO,我们首先要使能 GPIO 时钟,然后使能复用功能时钟,同时要把 GPIO 模式设置为复用功能对应的模式 1.串口时钟使能。 RCC_APB2PeriphClockCmd(); 2.串口复位。 一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。复位的是在函数 USART_DeInit()中完成: void USART_DeInit(USART_TypeDef* USARTx);//串口复位 3

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

邮差的信 提交于 2020-01-10 11:24:17
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第42章 STM32H7的DMA基础知识和HAL库API 本章节为大家讲解DMA1(Direct memory access controller,直接存储器访问控制器)和DMA2,相比前面章节的BDMA,功能要强些,属于通用型DMA。 42.1 初学者重要提示 42.2 DMA基础知识 42.3 DMA的HAL库用法 42.4 源文件stm32h7xx_hal_dma.c 42.5 总结 42.1 初学者重要提示 DMA1和DMA2均支持8路通道。虽然是8路,但这8路不是并行工作的,而是由DMA的仲裁器决定当前处理那一路。 DMA最大传输次数65535次,每次传输单位可以是字节、半字和字。 DMA的循环模式不可用于存储器到存储器模式。 DMA1和DMA2带的FIFO是4个32bit的空间,即16字节。 使用DMA的FIFO和突发需要注意的问题较多,详情可看本章2.7小节。 STM32H7的参数手册DMA章节对存储器到存储器,外设到存储器,外设到存储器模式的传输过程进行了讲解,推荐大家看完本章节后读一下。 42.2 DMA基础知识 DMA的几个关键知识点放在开头说: 由于总线矩阵的存在,各个主控的道路四通八达,从而可以让DMA和CPU同时开工

友善mini2440裸机开发原理+源码

一个人想着一个人 提交于 2020-01-10 03:36:13
友善mini2440裸机开发源码 源码+开发工具 开发工具:minitools、gcc-4.4.3、vim等 **我们需要先设置cpu工作模式+关闭看门狗+关闭中断后再执行我们自己的代码,因为本文是将代码下载到内存中运行,所以不具备跳转绝对地址的能力,也就不能处理中断。 1. led mini2440有4个可供用户编程的led,分别是nled_1、nled_2、nled_3、nled_4: 他们分别连向GPB5、6、7、8,由于这里的led接入了上拉电阻,我们的cpu引脚应输出0而使led发光,输出1led熄灭。 接下来,我们先查看s3c2440的用户手册,找到GPB组的寄存器组: 这里就是我们需要编程的寄存器。第一个是GPB组IO的控制寄存器,用于选择配置引脚工作模式,第二个是数据寄存器,如果引脚被配置为输入口或其他功能口,我们将从这个寄存器中读出对应的数据。如果作为输出口,我们就从这个寄存器中写入需要输出的数据。最后是上拉寄存器。s3c2440每个GPIO的引脚都内部配置了上拉功能,不需要的时候写1关闭即可。 代码链接: https://download.csdn.net/download/weixin_38716790/12085350 2. 串口 mini2440有3个可编程串口,分别是串口0、1、2,其中串口0已经接了RS232接口出来

STM32F407之DMA-笔记

放肆的年华 提交于 2020-01-05 09:02:49
学习要点记录,并不全面,祥参 参考手册RM0090 简介: DMA用于外设-内存,内存-内存之间数据的快速传输 DMA控制器由双AHB 主总线架构和独立的FIFO组成,以此来优化系统带宽 两个DMA控制器一共含有16个数据流,每个控制器含有8个数据流;每个数据流有8个通道,每个数据流有一个优先级仲裁器。 主要特征: 双AHB总线架构,一个负责内存访问,另一个负责外设访问 AHB从机编程接口只支持32位访问 每个数据流拥有4个独立的32位FIFO,直接模式和FIFO模式都可以使用 --FIFO模式下,可以通过软件设置FIFO阈值为1/4,1/2,3/4 --直接模式下,每个DMA请求立即触发一次数据传输。当处于直接模式,从内存向外设传输数据时,DMA只从内存预装载一个数据到FIFO --每个数据流可以通过软件配置为: -------常规通道,支持 外设-内存 ;内存-外设 ;内存-内存 。 -------双缓冲通道,支持内存双缓冲 --数据流之间的优先级可以通过软件设置为:非常高 ;高 ;中等 ;低 ;如果优先级相等,那么数据流编号越小,优先级越高 --只有DMA2的每个数据流支持软件触发的数据传输,而且只有传输方向为: 内存-内存 --每个数据流请求是8个通道中的一个。选择可以通过软件设置,而且允许一些外设来触发DMA请求 --传输的数据量可以通过DMA控制器管理,或者通过外设管理

基于FPGA的SPI协议及设计实现

江枫思渺然 提交于 2020-01-01 05:19:06
基于FPGA的SPI协议及设计实现 博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢! 引言介绍 在电子通信领域里采用的通信协议有IIC,SPI,UART,FSMC等协议。本文将基于FPGA来介绍并设计标准的SPI总线协议,实现FPGA与MCU的数据通信。SPI是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI是一种高速的、全双工、同步通信总线,标准的SPI也仅仅使用4个引脚,常用于FPGA和 EEPROM、FLASH、数字信号处理器等器件的数据通信。 SPI的原理介绍 SPI的通信方式是主从方式通信。这种模式通常只有一个主机和一个从机或者一个主机和多个从机;一般来说,标准的SPI协议是由4根线组成,分别是SSEL(从机片选使能信号,也写作 SCS,CSB)、SCLK(串行时钟,也写作SCK)、MOSI(主机输出从机输入Master Output/Slave Input)和MISO(主机输入从机输出Master Input/Slave Output)。有的SPI接口芯片带有中断信号INT,也有的SPI接口芯片只作为从机使用故只有MISO口,不过这里本文将基于FPGA来介绍并设计标准的SPI总线协议。 SPI的标准接口 CSB:从设备片选使能信号。注意的是