19. ARM裸机开发(45道)***3***

3.I/O接口(17道)

3.1 GPIO口一般有哪三个寄存器?

以S3C2410为例,有控制寄存器、数据寄存器、上拉寄存器。


3.2 GPIO的输入输出模式有哪些?

答案:

(1)输入模式:浮空输入、带上拉输入、带下拉输入、模拟输入。

(2)输出模式:开漏输出、推挽输出、开漏复用输出、推挽复用输出。

解读:

浮空输入_IN_FLOATING

浮空输入,可以做KEY识别。

带上拉输入_IPU

IO内部上拉电阻输入。

带下拉输入_IPD

IO内部下拉电阻输入。

模拟输入_AIN

应用ADC模拟输入,或者低功耗下省电。

开漏输出_OUT_OD

IO输出0GNDIO输出1则悬空,需要外接上拉电阻才能输出高电平。当输出为1时,IO口的状态由上拉电阻拉高,但同时IO口也可由外部电路拉低,可以通过输入数据寄存器读取电平变化,实现C51IO双向功能。

推挽输出_OUT_PP

IO输出0GND IO输出1VCC,读输入值是未知的。

复用功能的推挽输出_AF_PP

片内外设功能(I2CSCL,SDA)。

复用功能的开漏输出_AF_OD

片内外设功能(TX1,MOSI,MISO.SCK.SS


3.3请说明总线接口UARTUSBSPIIIC的异同点。

总线接口

/

同步/异步

工作方式

速率

线路

距离

大小端

UART

串行

异步

全双工

慢,最快只有1.5Mbps

3线:RXTXGND

远,RS-485可达1200m

小端模式

USB

串行

同步

半双工

快,USB3.0可达5Gbps

4线:VbusGNDD+D-

近,不超过5m

小端模式

SPI

串行

同步

全双工

快,可达50Mbps

3线或4线:SCLKSIMOSOMISS

远,可达10m

大端模式

IIC

串行

同步

半双工

慢,最快只有3.4Mbps

2线:SCLSDA

近,不超过30cm

大端模式


3.4什么是异步串行?什么是同步串行?

(1)异步串行方式的特点:

①以字符为单位传送信息,相邻两个字符间的间隔是任意长;即字符内部各位同步,字符间异步;

②因为一个字符中的比特位长度有限,所以接收时钟和发送时钟只要相近就可以了。

(2)同步串行方式的特点:

①以数据块为单位传送信息,在一个数据块内,字符与字符之间无间隔;即字符内部各位同步,字符间也同步;

②因为一次传输的数据块中包含的数据较多,所以接收时钟与发送时钟需要严格同步。

3.5 IIC总线时序图?
(1)时序总结:

总线空闲状态

SCLSDA均为高电平,接上拉电阻。

启动信号(START

SCL保持高电平期间,SDA由高电平被拉低。由主控器发出。

数据位传送(DATA

SCL保持高电平期间,SDA上的电平保持稳定,低电平为数据0、高电平为数据1。用法:主控器和被控器都可发出。

应答信号(ACK

SCL保持高电平期间,SDA保持低电平。IIC总线上所有数据都是以8位字节传送的,发送器每发送一个字节,就在第9个时钟脉冲期间释放SDA(高电平),由接收器反馈一个ACK

非应答信号(NACK

SCL保持高电平期间,SDA保持高电平。如果接收器是主控器,则它在收到最后一个字节后,发送一个NACK,通知被控器结束数据发送,并释放SDA(高电平),以便主控器发送一个STOP

停止信号(STOP

SCL保持高电平时间,SDA由低电平被释放(拉高)。由主控器发出。

(2)写数据步骤:
①主机发起一个启动信号(START)。
②主机发送7bit从机地址+1bit读写选择位,1表示读、0表示写。
③从机产生应答信号(ACK)。
④主机发送8bit从机寄存器地址。
⑤从机产生应答信号(ACK)。
⑥主机发送一个字节数据。
⑦从机产生应答信号(ACK)。
⑧主机发送一个停止信号(STOP)。
(3)读数据步骤
①主机发送一个启动信号(START)。
②主机发送7bit从机地址+1bit读写选择位,1表示读、0表示写。
③从机产生一个应答信号(ACK)。
④主机发送8bit从机寄存器地址。
⑤从机产生一个应答信号。
⑥主机再次发送一个启动信号(START)。
⑦主机再次发送7bit从机地址+1bit读写选择位,1表示读、0表示写。
⑧从机产生一个应答信号(ACK)。
⑨主机读取一个字节数据。
⑩主机产生一个非应答信号(NACK)。之后产生一个停止信号(STOP)。

3.6 SPI的四种操作时序分别是什么?

SPI的时钟极性CPOL和时钟相位CPHA可以分别为0或1,由此构成了四种组合:

①CPOL = 0,CPHA = 0:空闲时SCLK为低电平,在第一个边沿开始采样。

②CPOL = 0,CPHA = 1:空闲时SCLK为低电平,在第二个边沿开始采样。

③CPOL = 1,CPHA = 0:空闲时SCLK为高电平,在第一个边沿开始采样。

④CPOL = 1,CPHA = 1:空闲时SCLK为高电平,在第二个边沿开始采样。


3.7哪种总线方式是全双工类型?哪种总线方式的传输距离较短?

(1)UART、SPI是全双工类型。

(2)IIC、USB的传输距离较短。


3.8编写一个通用型串口接收程序,如何实现判断未知设备的端口号和波特率?

(1)判断端口号:首先搜索计算机可用端口,然后逐个打开,分别定时1.5秒,有数据进来则认为是目标端口。

(2)波特率判断:将本机波特率分别设置为2400、4800、9600、19200、38600、57600、115200,每个波特率定时1.5秒,对收到的ASCII码进行分析,将小于等于127的认为是正常的字符,将大于127的认为是乱码,当正常字符数目大于等于10倍乱码数目则认为当前波特率为正确波特率,并终止往后搜索。另外,也可以通过示波器判断。


3.9串口如何发送浮点型数据?

可将多字节的浮点型数据分解成单字节逐个发送,接收后组合还原。

(1)使用共用体来分解

union  
{  
    float f;  
    unsigned long l;  
}data_TX;  
data_TX.f = 123.456;  

(2)发送时发送4字节(小端模式,低位先发)

TX = (unsigned char)data_TX.l;       // 低8位  
TX = (unsigned char)(data_TX.l >> 8);  
TX = (unsigned char)(data_TX.l >> 16);  
TX = (unsigned char)(data_TX.l >> 24);  // 高8位  

(3)接收端也定义同样的结构体,并接收4字节数据

union  
{  
    float f;  
    unsigned long l;  
}data_RX;  
data_RX.l = RX;      // 低8位  
data_RX.l |= RX << 8;  
data_RX.l |= RX << 16;  
data_RX.l |= RX << 24; // 高8位  

(4)最后data_RX.f == data_TX.f。


3.10 UARTTTLRS-232RS-485的关系?

答案:

(1)UART是一种具有协议特征的收发器/接口/总线,也就是说它是一个按照特定协议来收发数据的硬件,它规定了数据按照什么格式和时序来传输。

(2)而TTL、RS-232、RS-485是三种不同的电气协议,是对电气特性的规定,作用于数据传输通路,但它并不包含对数据的处理方式。UART可以使用TTL电平,也可以使用RS-232、RS-485电平。

解读:三种电气协议的区别:

TTL(晶体管-晶体管逻辑电平)

规定+5V(或>=2.4V)等于逻辑“1”,0V(或<=0.4V)等于逻辑“0”,噪声容限为0.4V

RS-232

采用负逻辑传输,规定-5V ~ -15V等于逻辑“1”,+5V ~ + 15V为逻辑“0”,噪声容限为2V

RS-485

采用差分传输,规定A线电平比B线电平高200mV以上时为逻辑“1”,A线电平比B线电平低200mV以上时为逻辑“0”。


3.11 RS-232RS-485的区别和联系?

(1)区别:

①抗干扰性:RS-485接口的抗干扰性比RS-232接口强,因为RS-485采用差分传输。

②传输距离:RS-485接口(1200m)的传输距离比RS-232接口(50m)远。

③通信能力:RS485接口在总线上允许连接多达128个收发器,而RS-232接口只允许一对一通信。

④传输速率:RS-485接口的最高传输速率为10Mbps,而RS-232接口为20Kbps。

⑤信号线:RS-485接口组成半双工网络需要两根信号线,组成全双工网络需要四根信号线;RS-232接口一般使用RXD、TXD、GND三根线组成全双工网络。

⑥电气电平值:RS-485接口规定A线电平比B线电平高200mV以上时为逻辑“1”,A线电平比B线电平低200mV以上时为逻辑“0”。RS-232接口规定-5V ~ -15V等于逻辑“1”,+5V ~ + 15V为逻辑“0”,噪声容限为2V。

(2)联系:

①都可通过DB-9连接器连接。

②均可采用屏蔽双绞线传输。

③都是串行通信。

④通信方式都是全双工(一般RS-485是半双工)。


3.12 uart如何保证数据传输的正确性?

(1)在数据位的两端添加了起始位、奇偶校验位、停止位等用于数据的同步和纠错。

(2)在接收端用16倍波特率对数据进行采样,取中间的采样值,很大程度上确保了采样数据的正确性。


3.13保证数据无串扰,参数设置正确,但是串口A传输float类型给串口B,总是出现错误,请问可能是什么原因?

可能是发送端和接收端的大小端不一致。


3.14什么是MSB,什么是LSB

(1)MSB(Most Significant Bit):最高有效位,是指二进制中最高值的比特。

(2)LSB(Least Significant Bit):最低有效位,是指二进制中最低值的比特。


3.15 UART一帧可以传5/6/7/8位,IIC必须是8位,SPI可以8/16位。


3.16请列举常用的串行通信方式(两种以上),并简述串行通信和并行通信不同之处、优缺    点。

(1)异步通信(UART)和同步通信(SPI、IIC、USB等)。

(2)串行速度慢但占用资源少、线间干扰小;并行速度快但占用资源多、线间干扰相对大。


3.17 CAN总线接口相对于RS-232接口、RS-485接口的优点是什么?

(1)CAN总线接口相对于RS-232接口的优点是抗干扰能力强、传输距离远。它采用差分传输,内置CRC校验,传输可靠性强。

(2)CAN总线接口相对于RS-485接口的优点是能构成多主系统,同一时刻可以有两个或两个以上的设备处于发送状态,适用于实时性要求高的工控领域。

#offer比较##拼多多##滴滴#
全部评论
作为一个热衷于吃瓜的在上海实习了大半年的实习生小同学,我隔壁组的实习生也是拿了pdd,并且是个简直无法让人拒绝的sp价格。但是所有的leader都劝他不要去,并且打赌去了不过半年一定会离职,一个是因为强度大,另一个是因为内部架构紊乱不利于应届生成长。相反,我拿了滴滴的offer我的同事们都觉得很好的选择,表示滴滴会有人愿意带你,架构比较明晰,是适合应届生成长的地方。 我相信前辈们的建议都是值得参考的。以上~
2 回复
分享
发布于 2018-11-12 21:05
拼多多年包有20? 给我的11k,已经拒了
1 回复
分享
发布于 2018-11-10 13:56
博乐游戏
校招火热招聘中
官网直投
hhh楼主和我有点像 我也是双非本科 也拿的是pdd管培(面试时候是招商运营)和滴滴成长快艇的市场和管培,我最后选了滴滴。原因一是pdd管培培养方案不明确,无论是运营和市场发的都是管培。二拼多多加班严重,薪资总包算起来并没有太高的性价比。三滴滴可以换城市轮岗,我比较喜欢这种在路上的感觉。而且滴滴今年也捷出之星全球轮岗的offer,但是我没有拿到不过我相信未来一定有机会去全球做业务,但是pdd大概就只能负责下沉用户了吧。然后就是关于你说的网约车和电商的前景问题,个人觉得两者都不错,一时半会是不会倒闭的,滴滴背后有BAT的投资,PDD背后有腾讯网易顺丰的投资。但是我还是选择滴滴,毕竟滴滴的氛围真的很nice,从面试就能感觉出来。而且违约滴滴不需要违约金,还可以帮你付前一家公司的违约金,这种良心公司真的少了。最重要的是有双休!有双休!有双休
点赞 回复
分享
发布于 2018-11-11 12:49
我也在纠结滴滴区域市场管培和另一家公司。 滴滴的打车业务前景肯定不会有任何问题,我也问过很多之前实习认识的领导。内部氛围也可以。但是区域管培和总部管培区别还是蛮大的,包括工作内容和未来发展。
1 回复
分享
发布于 2018-11-13 10:21
我觉得你能接受11.11.6就去拼多多吧😂😂😂
点赞 回复
分享
发布于 2018-11-10 12:09
品质还是快捷哒
点赞 回复
分享
发布于 2018-11-10 13:49
应该不止13薪吧。。至少绩效高了肯定不止
点赞 回复
分享
发布于 2018-11-10 16:01
滴滴因为今年顺风车关了,且一直整顿安全,才降薪了,长期还是可期的,打车界滴滴还是垄断地位。拼多多处于成长期,但用户量上涨吃力,长期是迷
点赞 回复
分享
发布于 2018-11-10 23:21
运营今年不都是17薪吗
点赞 回复
分享
发布于 2018-11-12 00:34
同样纠结拼多多和滴滴……楼主决定去哪呀? 另外,我是滴滴实习生,滴滴内部气氛真的很棒!但是出行行业又不确定之后的发展空间会不会太狭窄了(毕竟滴滴垄断唉),拼多多的话就是担心下班太晚噗,想找楼主私聊!
点赞 回复
分享
发布于 2018-11-12 10:50
我和你一样楼主,最后去了滴滴,base在广州
点赞 回复
分享
发布于 2018-11-17 21:45
Pdd啊!你知道滴滴的区域运营有多惨吗!?很累很累!天天出差!除非你就呆在本部……别去
点赞 回复
分享
发布于 2019-11-08 14:38

相关推荐

1 10 评论
分享
牛客网
牛客企业服务