《基于ARM的单片机应用及实践——GD32案例式教学 第2版》_武奇生 习题解答.docx
第一章1 .请举例10个以上身边单片机系统的例子。答:手机,智能电视,机顶盒,洗衣机,空调,智能家电,智能表,智能门锁,机器人,路由器。2 .请归纳整理嵌入式系统开发全流程中涉及到的知识领域,并思考哪些属于嵌入式系统初学者应该掌握的关键技能。答:数字电子技术,模拟电子技术,电路原理,C语言程序设计。3 .嵌入式系统设计中有哪些矛盾需要设计者和开发者解决?答:如何在保证功能完整性、满足用户需求的前提下,综合考虑功能、性能、成本、可靠性多种因素,实现平衡设计,以及如何借助网络通信实现分布式计算。对平衡设计的追求,最终以嵌入式系统的具体形式体现出来,比如说一部手机、一台洗衣机、一个机器人等。4 .如何理解计算机的计算能力和性能之间的概念差异?答:就嵌入式系统而言,普遍存在着存储器容量、运算速度、电源、尺寸、成本等各方面的约束,但这并不妨碍一个控制洗衣机的4位低成本微处理芯片和一个用于高速图像处理的64位高性能处理芯片在“能力”上的理论等价性,因为它们都是图灵机模型的具体实现。他们的区别不在于理论上可求解问题的不同,而在于解决问题的快慢,即所谓的“性能”。一个问题在巨型机上可解,那么换成笔记本或微控制器,理论上也是一定可解的,只不过计算的过程慢许多而已。而这个区别在汉语中常常被混淆,例如我们在评价某人说他很有能力的时候,往往隐含着两重含义,一是他可以解决未知问题和疑难问题,这是他的能力,另一重含义是他做事做得又快又好,这其实是它的效率问题。而图灵机模型中的“能力”(Capability)是指前者,后者应属于“性能”(Performance)范畴,今天的计算机,尽管形态各异,本质上都是图灵计算机模型的一个个技术实现,因此它们都具有相同的理论计算能力。5 .20世纪五六十年代,阿塔纳索夫等人都具备了电子计算机的构思,当时也拥有相应的技术手段,为什么他们都不能最后完成计算机的发明?答:技术的进步己经进入新的历史时期,电子计算机的诞生不再是凭借某位杰出人物个人的努力就能诞生的,制造电子计算机不仅需要巨大的投资,而且需要科学家、工程技术人员以及科学组织管理人员的密切合作。这一点恰恰反映了20世纪的科学己经进入各门学科互相渗透,科学研究社会化的特点。6 .如何理解计算机系统软硬件边界?答:对任何一个真实的、技术可实现的计算机系统,都需要有最基础的一层硬件来实现,这一最基础的硬件实现了图灵机模型的要求,其上大部分都是各种硬件加速手段,对一个具体的计算机系统而言,软硬件的分割在哪里,主要取决于性能和成本之间的折中。如果要求高性能,那么硬件加速的部件可以多些,相应成本也不可避免会增加;如果要求低成本,那么图中曲线可以下移,即用软件完成大部分处理,但性能会有所下降。第二章1.Arni®COrteX西M4处理器有哪几条系统总线?存储器采用什么架构?答:Arm®Cortex-M4处理器包括三条AHB总线分别称为I-CODE总线、D-Code总线和系统总线;Arm®COrteXAM4存储器的组织采用哈佛结构。2 .CortexM4提供的哪些系统外设?答:1.内部总线矩阵,用于实现I-Code总线、D-Code总线、系统总线、专用总线(PPB)以及调试专用总线(AHB-AP)的互联;2.嵌套式向量型中断控制器(NVIe);3.闪存地址重载及断点单元(FPB);4.数据观测点及跟踪单元(DWT);5.指令跟踪宏单元(ITM);6.嵌入式跟踪宏单元(ETM);7.串行线和JTAG调试接口(S町-DP);8.跟踪端口接口单元(TPIU);9.内存保护单元(MPU);10.浮点运算单元(FPU)o3 .程序存储器,数据存储器,寄存器和I/O端口的地址空间有多大?为什么?答:程序存储器,数据存储器,寄存器和I/O端口都在同一个线性的4GB的地址空间之内。这是CorteX妗M4的最大地址范围,因为它的地址总线宽度是32位。第三章1 .中断/事件控制器有哪几种触发类型?答:EXTl有三种触发类型:上升沿触发、下降沿触发和任意沿触发。2 .绘制EXTl结构框图。答:如下图所示。3 .EXTI触发源有哪些?答:EXTl触发源包括来自I/O管脚的16根线以及来自内部模块的7根线(包括1.VD、RTC闹钟、USB唤醒、以太网唤醒、RTC侵入和时间戳、RTC唤醒)。第四章1 .CortCX财M4通用和备用输入/输出接口有哪些特征?答:1.输入/输出方向控制;2.施密特触发器输入功能使能控制;3.每个引脚都具有弱上拉/下拉功能;4.推挽/开漏输出使能控制;5.置位/复位输出使能;6.可编程触发沿的外部中断-使用EXTI配置寄存器;7.模拟输入/输出配置;8.备用功能输入/输出配置;9.端口锁定配置;10.单周期输出翻转功能。2 .狂位之后GPlO端口、串行线调试端口、JTDI、JTCK/SWC1.K.JTMSSWDI0xNJTRSTNJTRST各是什么输入模式?答:在究位期间或复位之后,备用功能并未激活,所有GPlO端口都被配置成输入浮空模式,这种输入模式禁用上拉(PU)/下拉(PD)电阻。但是复位后,串行线调试端口(JTAG/Serial-WiredDebugpins)为输入PU/PD模式;PA15:JTDI为上拉模式;PA14:JTCK/SWC1.K为下拉模式;PA13:JTMS/SWDIO为上拉模式;PB4:NJTRST为上拉模式;PB3:NJTRST为浮空模式。第五章1. DMA控制器为何能够提高数据传输效率?答:DMA控制器提供了一种硬件的方式在外设和存储器之间或者存储器和存储器之间传输数据,而无需MeU的介入,避免了MCU多次进入中断进行大规模的数据拷贝,最终提高整体的系统性能。2. COrteX4如何处理内核与DMA控制器总线访问之间的冲突?如何保证MCU正常工作?答:CorteX於M4内核与DMA控制器都是通过系统总线来处理数据,引入仲裁机制来处理它们之间的竞争关系。当MCU和DMA指定相同的外设的时候,MCU将会在特定的总线周期挂起。总线矩阵使用了轮询的算法保证MCU至少占用了一半的带宽。3. DMA控制器由哪几部分组成?答:DUA控制器由4部分组成:1.AHB从接口配置DMA;2.两个AHB主接口进行数据传输;3.两个仲裁器进行DMA请求的优先级管理;4.数据处理和计数。4. DMA有几种数据传输模式?各模式的数据读、写源分别是什么?答:有3种数据传输模式:外设到存储器、存储器到外设、存储器到存储器。各模式数据读写源:1.外设到存储器:通过AHB外设主机接口从外设读取数据,通过AHB存储器主机接口向存储器写入数据;2.存储器到外设:通过AHB存储器主机接口从存储器读取数据,通过AHB外设主机接口向外设写入数据;3.存储器到存储器:通过AHB外设主机接口从存储器读取数据,通过AHB存储器主机接口向存储器写入数据。5. 发生哪几种类型的错误会关闭DMA传输?答:三种:FlFo错误、总线错误、寄存器访问错误。第六章1 .GD32F4xx系列微控制器支持哪两种调试模式?两种模式之前如何实现切换?答:默认使用JTAG调试接口,可以通过下列软件序列从JTAG调试切换到SW调试:发送50个以上TeK周期的TMS=I信号;发送16位TMS=IIloOllIlOoIIIlO(0xE79E1.SB)信号;发送50个以上TCK周期的TMS=I信号。切换SW调试到JTAG调试的软件序列;发送50个以上TCK周期的TMS=I信号;发送16位TMS=II100lIlOolIllOO(0xE73C1.SB)信号;发送50个以上TCK周期的TMS=I信号。2 .请列举GD32F4xx系列微控制器调试时使用的引脚及功能。答:调试系统支持串行(SW)调试和跟踪功能,也支持JTAG调试。JTAG需要至少4个引脚:TCKsTDKTMS和TDOo复位脚nTRST是可选的。串行线调试协议(SW),它只须两个引脚:SWC1.K和SWD1003 .请说明GD32F4xx系列微控制器对于TIMER,I2C,RTC,WWDGT,FWDGT和CAN等外设调试支持。答:当内核停止,并且DBG控制寄存器I(DBG_CT1.I)或DBG控制寄存器2(DBG_CT1.2)中的相应位置1。对于不同外设,有不同动作:对于TIMER外设,TlMER计数器停止并进行调试;对于I2C外设,SMBUS保持状态并进行调试;对于神DGT或者FWDGT外设,计数器时钟停止并进行调试;对于RTC外设,计数器停止并进行调试;对于CAN外设,接收寄存器停止计数并进行调试。第七章1. GD32F4xx系列ADC有多少个多路复用通道?可以转换哪些类型的模拟信号?答:GD32F4xx系列ADC有19个多路复用通道,可以转换来自16个外部通道、2个内部通道和一个电池电压(VBAT)通道的模拟信号。2. GD32F4xx系列ADC有哪些转换模式?答:ADC四种转换模式:1.单次模式,每次触发转换一次选择的输入通道;2.续模式,连续转换所选择的输入通道;3.间断模式;4.同步模式(适用于具有两个或多个ADC的设备)。第八章1 .GD32系列定时器有哪几种类型?答:GD32系列定时器(TIMERx)分为五种类型:高级定时器、通用定时器1.0、通用定时器1.1、通用定时器1.2、基本定时器。2 .绘制基本定时器结构框图。答:如下图所示。3 .基本定时器向上计数模式如何配置?答:1.设置计数器从O开始向上连续计数到的自动加载值(写寄存器TlMERX_CAR);2.配置计数方向:设置TlMERX_CT1.O寄存器中的计数方向控制位DIR应该被设置成0。第九章1 .USART由哪些外部信号组成?答:如下表所示。引脚类型描述RX输入接收数据TX输出1/0(单线模式/智能卡模式)发送数据。当USART使能后,若无数据发送,默认为高电平CK输出用于同步通信的串行时钟信号nCTS输入硬件流控模式发送使能信号nRTS输出硬件流控模式发送请求信号2 .简述USART波特率的计算方法。答:波特率分频系数是一个16位的数字,包含12位整数部分和4位小数部分。波特率发生器使用这两部分组合所得的数值来确定波特率。由于具有小数部分的波特率分频系数,将使USART能够产生所有标准波特率。如果过采样率是16,波特率分频系数(Usartdiv)与系统时钟具有如下关系:USARTDIV="UC1.K"16XBaudrate"置位USART_CT1.O寄存器中的OVSMOD位选择8倍过采样,波特率分频系数(Usartdiv)与系统时钟具有如下关系:USARTDlV="UC1.K"/"8×Baudrate"USART0/5的系统时钟为PC1.K2,USART1/2和UART3/4/6/7的系统时钟为PC1.K1。在使能USART之前,必须在时钟控制单元使能系统时钟。3 .简述USART过采样过程?答:在默认情况下,接收器通过获取三个采样点的值来估计该位的值。如果是8倍过采样模式,选择第3、4、5个采样点;如果是16倍过采样模式,选择第7、8、9个采样点。如果在3个采样点中有2个或3个为0,该数据位被视为0,否则为1。如果3个采样点中有一个采样点的值与其他两个不同,不管是起始位,数据位,奇偶校验位或者停止位,都将产生噪声错误(NERR)。如果使能DMA,并置位USART_CT1.2寄存器中ERRlE,将会产生中断。如果在USART_CT1.2中置位OSB,接收器将仅获取一个采样点来估计一个数据位的值。在这种情况下将不会检测到噪声错误。4 .硬件流控信号有哪些?他们的作用是什么?答:硬件流控制功能通过11CTS和nRTS引脚来实现。通过将USART_CT1.2寄存器中RTSEN位置1来使能RTS流控,将USAR1.CT1.2寄存器中CTSEN位置1来使能CTS流控。RTS流控USART接收器输出nRTS,它用于反映接收缓冲区状态。当-帧数据接收完成,nRTS变成高电平,这样是为了阻止发送器继续发送下一帧数据。当接收缓冲区满时,nRTS保持高电平,可以通过读USART_DATA寄存器来清零。CTS流控USART发送器监视nCTS输入引脚来决定数据帧是否可以发送。如果USAR1.STATO寄存器中TBE位是0且nCTS为低电平,发送器发送数据帧。在发送期间,若nCTS信号变为高电平,发送器将会在当前数据帧发送完成后停止发送。5 .USART中断事件有哪些?答:如下表所示。中断事件事件标志控制寄存器使能控制位发送数据寄存器空TBEUSART_CT1.OTBEIECTS标志CTSFUSART_CT1.2CTSIE发送结束TCUSART-CT1.OTCIE接收到的数据可以读取RBNEUSART_CT1.ORBNEIE检测到过载错误ORERR检测到线路空闲ID1.EFUSART_CT1.OID1.EIE第十章1.I2C总线由哪些信号线组成?他们的功能是什么?答:串行数据SDA线和串行时钟SC1.线。连接到总线上的设备通过这两根线互相传递信息。SDA和SC1.都是双向线,通过一个电流源或者上拉电阻接到电源正极。当总线空闲时,两条线都是高电平。连接到总线的设备输出极必须带开漏或者开集,以提供线与功能。2 .I2C总线数据有效性如何判断?答:时钟信号的高电平期间SDA线上的数据必须稳定。只有在时钟信号SC1.变低的时候数据线SDA的电平状态才能跳变(如图10-2.数据有效性)。每个数据比特传输需要一个时钟脉冲。3 .I2C总线的起始信号和停止信号是什么?答:所有的数据传输起始于一个START(三)结束于一个STOP(P)(参见图10-3.开始和停止状态)。START起始位定义为,在Se1.为高时,SDA线上出现一个从高到低的电平转换。STOP结束位定义为,在SC1.为高时,SDA线上出现一个从低到高的电平转换。4 .简述I2C总线的发送流程?答:如图10-9.主机发送模式(10位地址模式)所示,在主机模式下发送数据到I2C总线时,软件应该遵循这些步骤来运行I2C模块:首先,软件应该使能I2C外设时钟,以及配置I2C.CT1.1中时钟相关寄存器来确保正确的I2C时序。使能和配置以后,I2C运行在默认的从机模式状态,等待START起始位,随后等待I2C总线寻址。软件将START位置1,在I2C总线上产生一个START起始位。发送一个START起始位后,I2C硬件将I2C_STAT0的SBSEND位置1然后进入主机模式。现在软件应该读I2C_STAT0寄存器然后写一个7位地址位或10位地址的地址头到I2JDATA寄存器来清除SBSEND位。一旦SBSEND位被清0,I2C就开始发送地址或者地址头到I2C总线。如果发送的地址是10位地址的地址头,硬件在发送地址头的时候会将Addiosend位置l软件应该通过读i2c_stato寄存器然后写io位低地址到i2c_data来清除Addiosend位。7位或io位的地址位发送出去之后,12c硬件将addsend位置1,软件应该清除ADDSEND位(通过读I2C_STAT0寄存器然后读I2C_STAT1寄存器)。I2C进入数据发送状态,因为移位寄存器和数据寄存器I2JDATA都是空的,所以硬件将TBE位置1。此时软件可以写第一个字节数据到I2JDATA寄存器,但是TBE位此时不会被清零,因为写入I2JDATA寄存器的字节会被立即移入内部移位寄存器。一旦移位寄存器非空,I2C就开始发送数据到总线。在第一个字节的发送过程中,软件可以写第二个字节到I2C_DATA,此时TBE会被清零。任何时候TBE被置1,软件都可以向I2C_DATA寄存器写入一个字节,只要还有数据待发送。在倒数第二个字节发送过程中,软件写入最后一个字节数据到I2C_DATA来清除TBE标志位,此后就不用关心TBE位的状态。TBE位会在倒数第二个字节发送完成后被置起,直到发送SToP结束位时被清零。最后一个字节发送结束后,I2C主机将BTC位置起,因为移位寄存器和I2JDATA寄存器此时都为空。软件此时应该配置STOP来发送一个STOP结束位,此后TBE和BTC状态位都将被清Oo5 .简述I2C总线的接收流程?答:主机接收模式下的软件流程首先,软件应该使能I2C外设时钟,配置I2JCT1.1中时钟相关寄存器来确保正确的I2C时序。初始化完成之后,I2C运行在默认的从机模式状态,等待START起始位和地址。软件将START位置1从而产生一个起始位发送一个START起始位后,I2C硬件将I2C_STAT0的SBSEND位置1然后进入主机模式。现在软件应该读I2JSTAT0寄存器然后写一个7位地址位或10位地址的地址头到I2JDATA寄存器来清除SBSEND位。一旦SBSEND位被清0,12C就开始发送地址或者地址头到I2C总线。如果发送的地址是10位地址的地址头,硬件在发送地址头的时候会先将Addiosend位置1,软件应该通过读i2c_stato寄存器然后写io位低地址到I2C_DATA来清除ADDloSEND位。7位或10位的地址位发送出去之后,I2C硬件将ADDSEND位置b软件应该清除ADDSEND位,通过读I2JSTAT0寄存器然后读I2C_STAT1寄存器。如果地址是10位格式,软件应该接着将START位再次置1来产生一个开始条件(Sr),Sr被发送出去以后SBSEND位被再次置1。软件应该通过先读I2JSTAT0然后写地址头到I2JDATA来清除SBSEND位,然后地址头被发到I2C总线,ADDSEND再次被置1。软件应该再次通过先读I2JSTAT0然后读I2JSTAT1来清除ADDSEND位。一旦第一个字节被接收,RBNE位会被硬件置1。此时软件可从I2JDATA寄存器读取出第一个字节,同时RBNE位被清0。此后任何时候,一旦RBNE位被置1.软件就可以从I2C_DATA寄存器读取一个字节的数据,直到主机接收了N-3个字节。如图10-10.主机接收方案(10位地址模式)所示,第N-2个字节还没被软件读出,之后第N-I个字节被接收,此时BTC和RBNE都被置位,总线就会被主机锁死以阻止最后一个字节的接收。然后软件应该清除ACKEN位。软件从I2C_DATA读出倒数第三个(N-2)字节数据,同时也将BTC位清0。此后第N-I个字节从移位寄存器被移到I2JDATA,总线得到释放然后开始接收最后一个字节,由于ACKEN已经被清除,因此主机不会给最后一个字节数据发送ACK响应。最后一个字节接收完毕后,硬件再次把BTC位和RBNE置1,并拉低SC1.,软件将STOP位置1,主机发出一个STOP结束位。软件读取第NT个字节,清除BTC。此后最后一个字节从移位寄存器被移动到I2JDATA。软件读取最后一个字节,清除RBNE0以上步骤需要字节数字N>2,N=I和N=2的情况近似。N=I在第4步,软件应该在清除ADDSEND位之前将ACKEN位清0,在清除ADDSEND位之后将STOP位置1。当N=I时步骤5是最后一步。N=2在第2步,软件应该在START置1之前将POAP置1。在第4步,软件应该在清除ADDSEND位之前将ACKEN位清0。在第5步,软件应该一直等到BTC位被置1然后将STOP位置1且读取I2C_DATA两次。第十一章1.串行外设接口(SPI)和片上音频接口(I2S)分别支持哪些运行模式?答:串行外设接口(SPl)可以工作于主机或从机模式。SPl接口支持具有硬件CRC计算和校验的全双工和单工模式。SPI5还支持SPl四线主机模式。片上音频接口(I2S)可以在四种模式下运行:主机发送模式、主机接收模式、从机发送模式和从机接收模式。2.简述SPl常规配置下各引脚的作用(SCK、MIS0、MoSI、NSS).答:SCK:主机:SPl时钟输出;从机:SPl时钟输入。MIS0:主机:数据接收线;从机:数据发送线;主机双向线模式:不使用;从机双向线模式:数据发送和接收线。M0SI:主机:数据发送线;从机:数据接收线;主机双向线模式:数据发送和接收线;从机双向线模式:不使用。NSS:软件NSS模式:不使用主机;硬件NSS模式:为NSS输出,NSSDRV=I时,为单主机模式,NSSDRV=O时,为多主机模式;从机硬件NSS模式:为NSS输入,作为从机的片选信号。第十二章1 .简述CAN模块的工作模式和通信模式。答:CAN总线控制器有3种工作模式:睡眠工作模式;初始化工作模式;正常工作模式。睡眠工作模式:芯片复位后,CAN总线控制器处于睡眠工作模式。该模式下CAN总线控制器的时钟停止工作并处于一种低功耗状态。将CAN_CT1.寄存器的S1.PWMOD位置1,可以使CAN总线控制器进入睡眠工作模式。当CAN进入睡眠工作模式后,CAN_STAT寄存器的S1.PWS位将被硬件置U将CAN_CT1.寄存器的AWU位置1,并当CAN检测到总线活动时,CAN总线控制器将自动退出睡眠工作模式。将CAN/T1.寄存器的S1.PMK)D位清0,也可以退出睡眠工作模式。由睡眠模式进入初始化工作模式:将CAN/T1.寄存器的IWMOD位置1,S1.PUrMOD位清Oo由睡眠模式进入正常工作模式:将CAN_CT1.寄存器的IwMOD位和S1.PWrMOD位清Oo初始化工作模式:如果需要配置CAN总线通信参数,CAN总线控制器必须进入初始化工作模式。将CANCT1.寄存器的IwMoD位置1,使CAN总线控制器进入初始化工作模式,将其清0则离开初始化工作模式。在进入初始化工作模式后,CA"STAT寄存器的IwS位将被硬件置1。由初始化模式进入睡眠模式:CAN_CT1.寄存器的S1.PWuOD位置1,IwMOD位清0。由初始化模式进入正常工作模式:CAN_CT1.寄存器的S1.PWMoD位和IWMoD位清0。正常工作模式:在初始化工作模式中配置完CAN总线通信参数后,将CA)1.CT1.寄存器的IwMOD位清0可以进入正常工作模式并与CAN总线网络中的节点进行正常通信。由正常工作模式进入睡眠模式:CAN_CT1.寄存器的S1.PWMOD位置1,并等待当前数据收发过程结束。由正常工作模式初始化模式:CAN/T1.寄存器的IWMOD位置1,并等待当前数据收发过程结束。2 .简述CAN总线的数据发送过程。答:数据发送步骤如下:第1步:选择一个空闲发送邮箱;第2步:根据应用程序要求,配置4个发送寄存器;第3步:将CANjmx寄存器的TEN置1;第4步:检测发送状态和错误信息。典型情况是检测到MTF和MTFNERR置1,说明数据被成功发送。3 .简述CAN总线的数据接收过程。答:数据接收步骤如下:第1步:查看FIFO中帧的数量;第2步:通过CAN_RFIFOMIx,CAN_RFIFOMPx,CAN_RFIFOMDATAOx和CAN_RFIFOMDATAIx读取数据;第3步:将寄存器CAN_RFIFOx的RFD置1释放邮箱,并且等待其由硬件自动清Oo4 .简述CAN总线的过滤功能。答:一个待接收的数据帧会根据其标识符(Identifier)进行过滤:硬件会将通过过滤的帧送至接收FIFO,并丢弃没有通过过滤的帧。过滤器包含28个单元,它们是bank到bank270每一个过滤器单元有2个寄存器CAN_FxDATAO和CAN_FxDATAI,它们可以配置为2种位宽:32-bit位宽和16-bit位宽。32-bit位宽CAN_FDATAx包含字段:SFID10:0,EFID17:0,FF和FT。16-bit位宽CAN_FDATAx包含字段:SFID10:0,FT,FF和EFID17rl5对于一个待过滤的数据帧的标识符(Identifier),掩码模式用来指定哪些位必须与预设的标识符相同,哪些位无需判断。对于一个待过滤的数据帧的标识符(Identifier),列表模式用来表示与预设的标识符列表中能够匹配则通过,否则丢弃。5 .简述CAN总线的波特率计算方法。答:CAN时钟从APBI总线上获得,波特率计算公式如下:波特率CAN时钟从APBI总线上获得,波特率计算公式如下:adratc=iSiSiNormalBitTunc=Isymlsbg÷IBMIBH其中:SYNCSBG=IXtQSSl-(1+BT.BS1)×J52=(14BT.BS2)×QJ(1+BT.BAUDPSC)×J第十三章1 .简述IEEE802.3中定义的以太网数据包格式。答:MAC的数据通信可使用两种帧格式:基本的MAC帧格式;带标签的MAC帧格式(对基本的MAC帧格式的扩展)。图13-2.MAC/带标签的MAC帧格式描述了帧结构(基本的和带标签的)字节发送取序1.SB2 .以太网MAC与外部PHY连接有哪两种接口?他们的信号定义分别是什么?答:MI1.媒体独立接口媒体独立接口(MID用于MAC与外部PHY互联,支持10Mbits和1OOMbit/s的数据传输模式。- MII_TX_C1.K:发送数据使用的时钟信号,对于IOMbit/s的数据传输,此时钟为2.5MHz,对于100Mbit/s的数据传输,此时钟为25MHzO- MII_RX_C1.K:接收数据使用的时钟信号,对于IOMbit/s的数据传输,此时钟为2.5MHz,对于100Mbit/s的数据传输,此时钟为25MHzO- MII_TX_EN:发送使能信号,此信号必须与数据前导符的起始位同步出现,并在传输完毕前一直保持。- MII_TXD3:0:发送数据线,每次传输4位数据,数据在HI_TX_EN信号有效时有效。MIIJXDO是数据的最低有效位,M11JXD3是最高有效位。当MII_TX_EN信号无效时,PHY忽略传输的数据。- MII_CRS:载波侦听信号,仅工作在半双工模式下,由PHY控制。当发送或接收介质非空闲时,此信号有效。PHY必需保证MII-CRS信号在发生冲突的整个时间段内都保持有效。此信号不需要与发送/接收的时钟同步。- MII_CO1.:冲突检测信号,仅工作在半双工模式下,由PHY控制。当检测到介质发生冲突时,此信号有效,并且在整个冲突的持续时间内,保持此信号有效。此信号不需要与发送/接收的时钟同步。- MII_RXD3:0:接收数据线,每次接收4位数据,数据在IH_RX_DV信号有效时有效。MII_RXD0是数据的最低位,MH_RXD3是最高位。当MII_RX_DV无效,而MII_RX_ER有效时,MII_RXD3:0数据值代表特定的信息(请参考表27-3.接收接口信号编码- MII_RX_DV:接收数据使能信号,由PHY控制,当PHY准备好数据供MAC接收时,该信号有效。此信号必须和帧数据的第一个4位同步出现,并保持有效直到数据传输完成。在传送最后4位数据后的第一个时钟之前,此信号必须变为无效状态。为了正确地接收帧,有效电平不能滞后于数据线上的帧首界定码出现。- MII_RX_ER:接收出错信号,保持一个或多个时钟周期(MII_RX_C1.K)的有效状态,表明MAC在接收过程中检测到错误。具体错误原因需结合III_RX_DV的状态及Ml1.RXD3:0的数据值,详见表27-3.接收接口信号编码。精简媒体独立接口(RMIl)规范减少了以太网通信所需要的引脚数。根据IEEE802.3标准,MII接口需要16个引脚用于数据和控制信号,而RMII标准则将引脚数减少到了7个。3 .以太网DMA控制器描述符有哪两种结构?答:链结构或环结构。4 .简述以太网配置流程答:在上电免位或系统复位之后,应用程序可按以下的典型操作流程来配置并启动以太网模块:使能以太网时钟:配置RCU模块来使能HC1.K时钟和以太网发送/接收时钟。配置通讯接口:配置SYSCFG模块,选择接口模式(Mn或RMn);配置GPlo模块,将相应的功能脚映射到复用功能Il(AFII)上。等待复位完成:轮询ENET_DMA_BCT1.寄存器直到SWR位复位(SWR位在上电复位后或系统复位后默认置位)。获取并配置PHY寄存器参数:根据HC1.K频率,配置SMl时钟频率,并访问PHY寄存器获取PHY的信息(例如是否支持半/全双工,是否支持IOM/100Mbit速度等等)。根据外部PHY支持的模式,配置ENET-MAC-CFG寄存器使与PHY寄存器信息一致。初始化以太网DMA模块用于数据传输:配置ENET_DMA_BCT1.,ENET_DMA_RDTADDR,ENET_DMA_TDTADDR和ENET_DMA_CT1.寄存器,完成DMA模块初始化(详细信息请参考DMA控制器描述章节)。初始化用于存放描述符列表以及数据缓存的物理内存空间:根据ENET_DMA_RDTADDR和ENET_DMAJTDTADDR寄存器中的地址,初始化发送和接收描述符(DAV=1),以及数据缓存。使能MAe和DMA模块,开始发送和接收:置位ENET_MAC_CFG寄存器中的TEN和REN位,开启MAC发送器和接收器。置位ENET-DMA-CT1.寄存器中的STE位和SRE位,使能DMA的发送和接收。如果有帧要发送:1 .选择一个或多个描述符发送描述符,将发送帧数据写到TDES中指定的缓存地址中;2 .将这些发送帧描述符中的DAV位置位;3 .写入任意值到ENET_DMA_TPEN寄存器中,使TXDMA退出挂起模式,开始发送数据;4 .有两种方法来确定当前帧是否发送完毕。第一种方法为轮询当前描述符的DAV位直到其复位;第二种方法仅适用于当INTC位为1的情况,应用程序可以轮询ENET_DMA_STAT寄存器的TS位直到其置位。如果有帧要接收:1 .查看描述符列表中的第一个接收描述符(其地址在ENET_DMA_RDTADDR寄存器中配置);2 .如果RDESO的DAV位复位,则说明描述符已被使用过,且接收缓存空间已存储了接收帧;3 .处理接收帧数据;4 .置位当前描述符的DAV位,以复用当前描述符接收新的帧;5 .查看列表中的下一个描述符,跳到步骤2。5.以太网协议栈1.WlP有哪些API?答:三种编程接口:RAWAPKNETC0NNAPl和SocketAPI。第十四章1. USBFS支持哪些运行模式?答:USBFS不仅提供了主机模式和设备模式,也提供了遵循HNP(主机协商协议)和SRP(会话请求协议)的OTG模式。2. USB主机端口状态有那些,绘制主机端口状态转移图。答:四种状态:POWCr-Off、EnablCd、DiS-ConneCted、Connectedo状态转移图见(图14-4.主机端口状态转移图)3. USBFSOTG模式有几种中断?答:OTG有两种中断:全局中断、唤醒中断。第十五章1.请列举常见的嵌入式操作系统。答:HClinUx、HC/OSTlI、FreeRTOS.RTX、VXWOrks、QNX、Huawei1.iteOS.RT-Thread02.FreeRTOS源代码包含哪些文件?他们的功能是什么?答:FreeRTOS的核心源文件由两个文件组成,分别是task,c和list.c,位于FreeRTOS-Kerne1目录下面。除了这两个文件外,下列文件也位于FreeRTOS-KCrneI目录下:queue,c该文件提供队列和信号量功能;timers,c该文件提供软件定时器功能;CVCnt_groups.c。该文件提供事件组功能;CrOUtinC.c。该文件提供协程功能。协程功能是用在非常小的控制器上面,现在几乎不再使用了。本书不使用协程功能;StreanI-buffers”。该文件提供流缓冲和消息缓冲功能。流缓冲区是一种进程间通信(IPe)原语,针对只有一个读取器和一个写入器的情况进行了优化,例如将数据流从中断服务例程(ISR)发送到RTOS任务,或从一个处理器核心发送到另一个处理器核。消息缓冲区建立在流缓冲区之上。流缓冲区发送一个连续的字节流,而消息缓冲区发送的是长度可变的离散消息。