嵌入式系统IO接口与编程复习题

更新时间:2024-02-02 03:12:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《嵌入式IO接口与编程》复习题

一、选择题

1、 按照ATPCS规则,返回值为int型的子程序或函数,其返回值通过( )

返回。 A、r1

B、r0

C、r14

D、r8

2、 若寄存器r2的值为0x1,执行完指令mov r2,r2,lsl#4后,r2的值为(B)。

A、0x2

B、0x10

C、0x8

D、0x4

3、 在收到主机发出的44H命令后,模块DS18B20所检测温度值的长度为( )。

A、2字节 B、3字节

C、4字节 D、不一定

4、 DS18B20使用前必须要确认器件是否存在,也就是完成复位和应答的过程中

(如图一),在这两个阶段总线DQ对应的引脚工作模式为( )。 A、都为输出

B、先输入再输出

C、先输出再输入

D、都为输入

5、 以下关于IIC总线起始信号和终止信号的描述,正确的是( )。

A、SCL为低电平期间,SDA由低电平向高电平变化,表示终止信号。 B、SCL为低电平期间,SDA由低电平向高电平变化,表示起始信号。 C、SCL为高电平期间,SDA由高电平向低电平变化,表示终止信号。 D、SCL为高电平期间,SDA由高电平向低电平变化,表示起始信号。 6、 ST32F439的SPI总线接口配置好后,若要发送数据,只需把数据赋值给

( )。 A、SPI_CR1

B、SPI_CR2

C、SPI_SR

D、SPI_DR

7、 SPI控制器的状态寄存器SPI_SR的bit0为1时,表示SPI接收缓冲区为空;

该位为0时表示,表示SPI接收缓冲区非空。下列循环语句中能够退出循环并保证SPI已接收完数据操作的是( )。 A、while(!(SPI1->SR| 0x1)) B、while(SPI1->SR&0x1)

B、while(!(SPI1->SR&0x1)) D、while(SPI1->SR|0x1)

8、 STM32F439中SPI控制器工作在I2S模式还是SPI模式由设置寄存器( )

来实现。 A、SPI_CR2

B、SPI_I2SCFGR

C、SPI_I2SPR

D、SPI_CR1

9、 触摸屏首次使用时需要调校,调校好的数据一般保存在( )中。

A、RAM

B、寄存器

C、EEPROM

D、堆栈

10、 nRF24L01可以工作在一对一通信模式或一对多通信模式,其中一对多工作

模式下最多允许几个发送节点( )。 A、四个 C、六个

B、五个

D、十个

11、 STM32F439的串口1初始化完成后,若要发送一个字节的数据,只需将数据

写入寄存器( )。 A、USART_SR

B、USART_DR

C、USART_CR1

D、USART_BRR

12、 在nRF24L01的Enhanced ShockBurstTM收发模式下,使用片内的先入先出

堆栈区,数据可以低速从微控制器送入,再高速(1Mbps/2Mbps)发射,这样可以尽量节能。与射频协议相关的所有高速信号处理都在片内进行,这种做法的优点不包括( C )。

A、节能 B、低的系统费用(低速微处理器也能进行高速射频发射) C、大大增加通信距离 D、数据在空中停留时间短,抗干扰性高; 13、 描述TFT LCD中像素点的数据长度有多种方法,常用的16位真彩色描述方

法为565,即RGB比例为5:6:5,对于480*320分辨率的TFT LCD来说,以565方式显示一帧图像需要的数据量大小为( )。 A、5120字节

B、76800字节

C、307200字节

D、153600字节

14、 在LCD控制器SSD1289中,入口模式指令03h的三个位共同控制了屏幕的

显示方向,其中I/D[0]和I/D[1]分别表示横向地址和纵向地址计数器的增减,AM表示地址更新方向。当I/D[1:0]=11,AM=0时,表示以下哪种显示方

式(c )。

A、 B、

C、 D、

15、 无线通信技术是实现物联网的关键,常用的无线通信技术有很多,他们各

有优缺点,其中基于( C )技术的硬件功耗最大。

A、ZigBee B、BlueTooth C、WiFi D、nRF24L01

二、填空题

1、 SPI是一种高速的全双工同步的通信总线,它的接口信号包括 __ 、

__ 以及主入从出(MISO)信号和主出从入(MOSI)信

号四种。

2、 IIC总线上从设备地址有8位,若该地址的最低位为0,表示对从设备进行

操作。

3、 Flash存储芯片W25Q16,其擦除操作是以 为单位进行。

4、 I2C总线是由PHILIPS公司开发用于连接微控制器及其外围设备串行总线,它由

_ 和 两条线构成。

设置时钟空闲时的电平,

设置读取

5、 在SPI设置中,

数据和发送数据的触发时钟沿。

6、 nRF24L01芯片的IRQ信号在以下三种情况会变为低电平:Tx FIFOs 发完并

且收到ACK(使能ACK情况下)、 ________________ 和达到最大重发次数。

7、 将寄存器r1中一个字的值存储在r2所指向的内存单元中,完整的ARM汇编

指令为

_______ 。

_______ 三种

8、 DMA数据传输方向有外设到存储器、存储器到存储器和

方向。

9、 一个10位的ADC,其参考电压(满量程)为3.3v, 则它的分辨率为

_______ ____ 。

10、在STM32F439中用4个位来表示中断优先级,在使用中断前需要进行优先级

分组,将中断优先级又可以分为

三、编程题

1、 根据程序中的注释,完善SPI1接口的初始化函数SPI1_Init(相关寄存器数据手册附后,假设所有寄存器的初始值均未知,使用位运算只设置注释中要求内容所对应的位,不能影响其它位)。

void SPI1_Init(void) {

//这里只针对SPI口初始化 RCC->APB2RSTR|=1<<12; tempreg|=0<<10;

//复位SPI1

//SPI主机

//16位数据格式

//空闲模式下SCK为1 CPOL=1

//数据采样从第2个时间边沿开始,CPHA=1

//全双工模式

RCC->APB2RSTR&=~(1<<12);//停止复位SPI1

_______ 和子优先级。

u16 tempreg=0;

RCC->AHB1ENR|=3<<0; //使能PORTA/PORTB时钟 RCC->APB2ENR|=1<<12; //SPI1时钟使能

GPIO_Set(GPIOB,PIN4|PIN5,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);//PB4~5复用功能输出

//PA5复

GPIO_Set(GPIOA,PIN5,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); GPIO_AF_Set(GPIOA,5,5); GPIO_AF_Set(GPIOB,4,5);

//PA5设置为复用功能5 //PB4设置为复用功能5

用功能输出

(1)_____ //PB5设置为复用功能5

(2)_____ //使能软件从器件管理

tempreg|=1<<8; tempreg|=1<<2; tempreg|=1<<11; tempreg|=1<<1; tempreg|=1<<0;

//对SPI1属于APB2的外设.时钟频率最大为84Mhz频率.

(3)_____ //波特率设置为Fpclk/256

//先发送LSB

tempreg|=1<<7;

(4)_____ //SPI使能

//设置CR1

SPI1->CR1=tempreg;

SPI1->I2SCFGR&=~(1<<11);//选择SPI模式

SPI1_ReadWriteByte(0xff);//启动传输,可省略

}

2、 编写程序实现W25QXX的读取数据函数W25QXX_ReadID,函数的功能及要求见下面的注释(W25QXX读取数据的时序图附后)。

/**************************************************************** 函数名:W25QXX_Read

函数功能:检查W25QXX是否存在并返回设备ID值 形参:u8* pBuffer,u32 ReadAddr,u16 NumByteToRead

形参含义:pBuffer为所读取数据的存储位置,ReadAddr为读取的地址,NumByteToRead为要读取的字节数。 返回值类型:void

需调用的底层函数:u8 SPI1_ReadWriteByte(u8 TxData),其中TxData表示要写入的字节,返回值表示读取到的字节。

****************************************************************/

四、简答题

1、 分别写出nRF24L01模块发送模式和接收模式配置的基本步骤。 答:发送模式配置函数:

接收模式配置函数:

2、 分析在使用DS18B20时初次测得的温度值为85℃的可能原因和解决的思路。

答:缺少转换函数,所以测得的温度总为初始值。

3、 分别简述I2C协议中起始信号和停止信号的SCL、SDA电平组合特征。

起始信号与停止信号

? 起始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是

一个电平信号。

? 停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不

是一个电平信号。

4、 简述EEPROM读写操作的基本步骤。

1、初始化时钟、串口、延时函数

2、初始化24C04(包括I2C相关GPIO初始化) 3、检测24C02是否正常 4、往24C02写入数据

5、从24C02读出数据

5、 简述W25Q16读写操作的基本步骤。

1)使能SPI1和四个引脚对应IO时钟 2)SPI初始化设置 3)W25Q16初始化设置

4)读取W25Q16 的设备ID,确认成功检测到设备 5)按照W25Q16的设备控制命令编写底层操作函数 6)读写操作

6、 简述nRF24L01的Enhanced ShockBurstTM发送流程和接收流程。

发送:1. 把地址和要发送的数据按时序送入NRF24L01; 2. 配置CONFIG寄存器,使之进入发送模式;

3. 微控制器把CE置高(至少10us),激发Enhanced ShockBurstTM发射;

4. Enhanced ShockBurstTM发射:① 给射频前端供电;②射频数据打包(加字头、CRC校验码); ③ 高速发射数据包; ④发射完成,NRF24L01进入空闲状态。 接收:1. 配置接收地址和要接收的数据包大小;

2. 配置CONFIG寄存器,使之进入接收模式,把CE置高。 3. 130us后,NRF24L01进入监视状态,等待数据包的到来;

4. 当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去;

5. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;

6. 微控制器把数据从FIFO读出(0X61指令);

7. 所有数据读取完毕后,可以清除STATUS寄存器。NRF2401可以进入 四种主要的模式之一;

7、 简述LCD初始化的基本步骤。

答:LCD初始化函数伪代码: //LCD初始化 void LCD_Init(void) {

初始化GPIO; 初始化FSMC; 读取LCD ID;

printf(“LCD ID:%x\\r\\n”,lcddev.id);//打印LCD ID,用到了串口1 //所以必须初始化串口1,否则黑屏 根据不同的ID执行LCD初始化代码; LCD_Display_Dir(0); LCD_LED=1; }

LCD_Clear(WHITE);

//默认为竖屏 //点亮背光 //清屏

8、 以SRAM中的数据发送到串口1为例,简述DMA方式使用的基本步骤。

1)使能DMA时钟 2)初始化DMA通道参数

3)使能串口DMA发送(USART_CR3)

4)查询确认DMA的EN位为0,确保数据流就绪可以配置( DMA_SxCR ) 5)设置通道当前剩余数据量(DMA_SxNDTR )

6)使能DMA通道,启动传输 ( DMA_SxCR ,EN设为1) 7)查询DMA传输状态(DMA_HISR 或DMA_LISR ) 8)获取/设置通道当前剩余数据量(DMA_SxNDTR )

9、 试画出TFTLCD触摸屏使用的结构示意图,并作简单说明。

应用思路: 1、LCD初始化

2、触摸屏控制器初始化 1)、SPI初始化

2)、IIC(24Cxx)初始化

3、触摸屏校正

根据读取24Cxx对应位置的参数,判断是否需要重新校正,若重新校正则需要重新保存校正参数。 4、等待屏幕被触摸,并根据触摸的位置触发相应动作(ISR)。

10、

优点: 缺点:

传统的寄存器开发方法和采用固件库开发的方法各有什么优点和缺点?

本文来源:https://www.bwwdw.com/article/06fw.html

Top