大学中的数电是啥内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大学中的数电是啥内容相关的知识,希望对你有一定的参考价值。
大二上,正在学,数字电路与系统设计基础,大概分了这几个部分,第一部分对逻辑数值的理解与转换,通俗地讲就是一大堆0100010111,化简找规律。第二部分,组合逻辑,这部分介绍了很多芯片,要求你会用这些芯片组合完成你想要的效果,最简单的输入0输出1.第三部分,触发器,这部分告诉你,电路是有延迟的,你可以利用延迟,有时也需要降低延迟,并增加了几种芯片,如触发器,寄存器,计数器,靠的就是电路的延迟。第四部分,数模互换,这部分是教你如何将连续的模电信号转换为不连续的数字信号(01),以及反向转换。第五部分正在学,深入讲了基础门电路的内部构造吧,NMOS,CMOS,暂时理解不深。第六部分综合。 参考技术A 大学课程要学到什么程度,和学院的办学层次有关。大专学生要懂得应用,就是我们如何利用这门课程完成某项东西;应用型大学,要在懂得应用的基础上了解更深一层的知识,比如了解下如何设计的内容;对于研究型大学,理解知识是基础,重在学会设计。对于数电,所学内容基本都一致,就是不同的办学层次培养的能力不同。第一章是逻辑函数,涉及进制转换、码制、逻辑函数、逻辑函数化简(卡诺图化简、公式化简等);第二章是基本门电路,涉及基本门电路和复合门电路的真值表、逻辑表达式、逻辑电路、波形图,二极管门电路、TTL门电路、COMS门电路中的知识,还有逻辑门芯片的引脚处理以及TTL和COMS门电路的驱动;第三章一般都是组合逻辑门电路,包括分析和设计组合逻辑门电路,重点学习了加法器、数值比较器、编码器、译码器、数据选择器和分配器。第四章是触发器的内容,包含了同步RS触发器、同步D触发器、主从RS触发器、主从JK触发器以及边沿型D触发器和边沿型JK触发器。第五章是时序逻辑电路的内容,包括分析和设计时序逻辑电路,重点讲解了计数器和寄存器的设计。第六章,是脉冲发生与整形电路,学会555定时器即可。对于本章,在国外的书籍中一般放置到模拟电路中学习,但是国内都是在数字电路中学习的。第七章主要讲的就是ADC和DAC的学习。这些基本就是大学生所学的数电内容,对于后面还有的章节,一般大学内都讲不到,那就靠学生的自觉性和主动性去学习了。
对于所有大学的学生来说,学习的基本内容一致性很高。但是在深层次的讲解上,缺有很大的差异。对于专科学生来说,学懂基础知识就是大学教师要做的事情,对于应用型大学来说,在明白知识的基础上要能够做一些实验,进而深入了解知识,和知识的运用。对于研究型大学,他们还要学习EDA技术,VHDL或者Verilog语言,自己做出一个mcu。 参考技术B 据理力争 争长论短 短小精悍
STM32f103的数电采集电路的DMA设计和使用优化程序
DMA,全称为:Direct Memory Access,即直接存储器访问。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。
DMA设置的一般步骤可以总结为如下几个步骤:
1.DMA时钟使能
2.DMA设置复位
3.设置DMA基地址,内存地址,输出方向参数
4.设置DMA数据大小,优先级,使用通道参数
5.DMA工作方式初始化
6.使能DMA
7.编写中断处理函数
前端采集模块的DMA使用主要用于ADC采集结果的传输和USART串口的数据发送传输。根据《stm32中文参考手册》的DMA请求一览表,选用了DMA1的通道1作为ADC1的数据传输通道,以及DMA1通道4作为和USART串口的数据发送传输通道。此处采用了单个DMA复用多通道的设计,是因为DMA速度足以完成这些任务,而且留下其他DMA资源以便项目以后可以扩展,达到节省资源的目的。
USART使用DMA发送数据配置和使能代码
- //DMA1的各通道配置
- //这里的传输形式是固定的,这点要根据不同的情况来修改
- //从存储器->外设模式/8位数据宽度/存储器增量模式
- //DMA_CHx:DMA通道CHx
- //cpar:外设地址
- //cmar:存储器地址
- //cndtr:数据传输量
- void DMA_USART_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
- {
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA传输
- DMA_DeInit(DMA_CHx); //将DMA的通道1寄存器重设为缺省值
- DMA1_MEM_LEN=cndtr;
- DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //DMA外设ADC基地址
- DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //DMA内存基地址
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //数据传输方向,从内存读取发送到外设
- DMA_InitStructure.DMA_BufferSize = cndtr; //DMA通道的DMA缓存的大小
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不变
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址寄存器递增
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //数据宽度为8位
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //数据宽度为8位
- DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //工作在正常缓存模式
- DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA通道x没有设置为内存到内存传输
- DMA_Init(DMA_CHx, &DMA_InitStructure); //根据DMA_InitStruct中指定的参数初始化DMA的通道USART1_Tx_DMA_Channel所标识的寄存器
- }
- //开启一次DMA传输
- void DMA_USART_Enable(DMA_Channel_TypeDef*DMA_CHx)
- {
- DMA_Cmd(DMA_CHx, DISABLE ); //关闭USART1 TX DMA1 所指示的通道
- DMA_SetCurrDataCounter(DMA_CHx, DMA1_MEM_LEN);//DMA通道的DMA缓存的大小
- DMA_Cmd(DMA_CHx, ENABLE); //使能USART1 TX DMA1 所指示的通道
- }
ADC使用DMA传送多通道数据配置和使能代码
- //DMA1的各通道配置
- //这里的传输形式是固定的,这点要根据不同的情况来修改
- //从存储器->外设模式/8位数据宽度/存储器增量模式
- //DMA_CHx:DMA通道CHx
- //cpar:外设地址
- //cmar:存储器地址
- //cndtr:数据传输量
- void DMA_ADC_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
- {
- RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA传输
- DMA_DeInit(DMA_CHx); //将DMA的通道1寄存器重设为缺省值
- DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //DMA外设ADC基地址
- DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //DMA内存基地址
- DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //内存作为数据传输的目的地
- DMA_InitStructure.DMA_BufferSize = cndtr; //DMA通道的DMA缓存的大小
- DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不变
- DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址寄存器递增
- DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //数据宽度为16位
- DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //数据宽度为16位
- DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //工作在循环缓存模式
- DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA通道 x拥有高优先级
- DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA通道x没有设置为内存到内存传输
- DMA_Init(DMA_CHx, &DMA_InitStructure); //根据DMA_InitStruct中指定的参数初始化DMA的通道
- }
- //开启一次DMA传输
- void DMA_ADC_Enable(DMA_Channel_TypeDef*DMA_CHx)
- {
- DMA_Cmd(DMA_CHx, DISABLE ); //关闭USART1 TX DMA1 所指示的通道
- DMA_Cmd(DMA_CHx, ENABLE); //使能USART1 TX DMA1 所指示的通道
- }
这里需要注意的是USART使用DMA发送数据需要每一次都重新使能,即每发送一次数据使能一下。
而ADC使用DMA传送多通道数据则只需要使能一次就可以自动循环工作,只需从数组空间读取ADC数据。
以上是关于大学中的数电是啥内容的主要内容,如果未能解决你的问题,请参考以下文章
❤️程序猿必备的数电知识,快来看看你掌握多少!❤️(建议收藏)