×
单片机 > 单片机程序设计 > 详情

SC16IS752在ARM扩展串口中的应用

发布时间:2020-06-09 发布时间:
|

嵌入式设备中串口是最常用、最简单的接口,如何扩展CPU的串口,对于多功能嵌入式设备有着重要意义。SC16IS752是NXP公司推出带I2C/SPI总线接口转双通道UART的转换芯片,可提供高达5Mbit/s的速率,兼容广泛使用的16C450,有利于软件的移植和编写。本文中微控制器采用NXP公司推出的LPC2214,基于16/32位ARM7TDMI-STM 的内核, 144脚封装,极低的功耗, 特别适用于工业控制等。

SC16IS752的主要特性如下:

●工作电压:3.3或2.5V, 工作温度范围:-40~+85°C,低功耗, 3.3V的睡眠电流小于30uA;

●两个全双工UART,64字节的FIFO,完全可编程的字符格式,RTS/CTS自动流控制;

●封装小, 和CPU连接简单,有HVQFN32和TSSOP28封装可选。

本文采用SPI来扩展CPU串口, SC16IS752设置为从模式,下面介绍其的硬件特性。                               

1.SC16IS752的引脚功能和寄存器


图一为SC16IS752的引脚排列,表一为各引脚的功能。

图一 管脚图

表一 :SPI接口管脚功能

管脚

功能

管脚

功能

管脚

功能

1

通道A  请求发送

11

SPI数据输入脚

21

I/O 或 modem的RIB

2

通道A  清除发送

12

SPI数据输出脚

22

3

通道A  发送输出

13

SPI输入时钟

23

通道B  发送输出

4

通道A  接受输入

14

空闲 接 VDD

24

通道B  接受输入

5

硬件复位

15

中断

25

I/O 或 modem的DSRA

6

晶体输入

16

通道B 清除发送

26

I/O 或 modem的DTRA

7

晶体输出

17

通道B 请求发送

27

I/O 或 modem的CDA

8

电源电压

18

I/O 或 modem的DSRB

28

I/O 或 modem的RIA

9

SPI接口选择

19

I/O 或 modem的DTRB

 

 

10

SPI芯片选择

20

I/O 或 modem的CDB

 

 

寄存器主要有发送寄存器(THR)、接收寄存器(RHR)、控制寄存器(FCR)、线控寄存器(LCR)、状态寄存器(MCR)、MODEM状态寄存器 (MSR)、中断使能寄存器(IER)、中断识别寄存器(IIR)、除数寄存器(DLH/DLL)、发送控制寄存器(TCR)、触发点寄存器(TLR)、 I/O脚控制寄存器等。[page]

2.SC16IS752中SPI时序图

如下图所示:             

3. SC16IS752与LPC2214接口电路图

图四为扩展串口的部分电路图。采用3线制的串口连线方式,用3.3V电源对SC16IS752供电,芯片封装选用TSSOP28,晶体采用 1.8432MHZ, 震荡电路由C3、 C4组成。SC16IS752硬件采用阻容复位,由R3、C2组成,也可采用微处理器的I/O口复位,笔者对两种方法在实际中都试验过。本文采用阻容复位,这样可节省I/O 口,SC16IS752的pin15脚接到LPC2214的INT3上,这样,既可以用中断方式编写软件,也可以用扫描的方式。R4为上拉电阻,确保电平可靠。CPU的SPI1为主模式,用一个I/O连到SC16IS752的SELL1,需要注意的是LPC2214的第60脚SELL1必须接高电平,用R5作上拉电阻。R1、R2是为LPC2214内部FLASH启动设置的。特别要注意 CPU的P0.14管脚的使用,FLASH boot装载程序代码是在CPU上电或复位时执行,器件复位时,当P0.14为低电平,启动ISP, 进行软件更改;当不需要ISP功能时,接上拉电阻R6,使P0.14处于一个稳定的状态。CPU复位限于篇幅,未给出。

图四  SC16IS752与LPC2214接口电路图

4.电平转换


电平转换采用SIPEX公司的SP3232E芯片,该芯片满足EIA/TIA-232-标准。工作电压为+3.0V~5.5V, 另外,管脚提供了ESD保护。使得驱动器和接收器的管脚可承受±15KV人体放电模式和IEC1000-4-2气隙放电模式。如下图所示:

图五  电平转换

5.初始化寄存器

SC16IS752初始化寄存器的程序如下:

/*SC16IS752初始化*/

void init_is752(void) {

/*初始化SC16IS752第一个串口A.*/

    write_is752_rega(IS752_CH_A,IS752_LCR,0xbf);    write_is752_rega(IS752_CH_A,IS752_EFR,IS752_EFR_VAL);

write_is752_rega(IS752_CH_A,IS752_LCR,0x00); 

/*设置SC16IS752 串口A 中断.*/

    write_is752_rega(IS752_CH_A, IS752_IER, IS752_IER_VAL); 

    write_is752_rega(IS752_CH_A, IS752_FCR, IS752_FCR_VAL); 

    write_is752_rega(IS752_CH_A, IS752_MCR, IS752_MCR_VAL); 

    write_is752_rega(IS752_CH_A, IS752_EFCR, IS752_EFCR_VAL);       

    /*初始化SC16IS752第二个串口B,同串口A,略. 清寄存器程序,略*/

}[page]

/* 写数据 */

void write_is752_rega(unsigned char chx,unsigned char addr, unsigned char data){

    unsigned char temp;

if((IS752_CH_A == chx) ||(IS752_CH_B == chx)){

        CLR_IS752_CS;

        temp = addr<<3;

        temp |= chx;

        spi_send_byte(SPI1,tmp);      

        spi_send_byte(SPI1,data);   /*发送数据.*/

        SET_IS752_CS; 

    }   

}

/*读数据*/

unsigned char read_is752_rega(unsigned char chx, unsigned char addr){

   unsigned char temp;

if((IS752_CH_A == chx) ||(IS752_CH_B == chx)){

        CLR_IS752_CS; 

        temp = addr<<3;

        temp |= 0x80|chx;

        spi_send_byte(SPI1,temp);  

        spi_send_byte(SPI1,0xff);     

        SET_IS752_CS;  

        return(S1SPDR);

    }

}

SPI程序接口在其他书籍中有详细介绍,在此不作描述(见参考文献1)。

5. 结语

市场上有很多串口扩展芯片,我们以前也用过并口来扩展串口,如16C552,16C554等。SC16IS752与它们相比,连接简单,功耗低,体积小,在实际应用中表现出很好的稳定性,已用于我们的设计的产品中。同时它体积小,功耗低,在手持设备中将有广阔的应用前景。

本文作者创新点: 1.只用CPU的5根口线就能扩展两个串口,节约了CPU的资源;

2.体积小,功耗低,在手持设备中将有广阔的应用前景;

3.连接简单,稳定性好。

图六 SC16IS752和周围器件的大小比较  

参考文献

1. 周立功等.ARM嵌入式系统基础教程。北京:北京航空大学出版社.2005www

2. NXP公司SC16IS752 /SC15IS762 datasheet.      Rev0.12-19 September 2005

3. 李春光等。嵌入式微处理器与FLASH闪存的接口设计实现,微计算机信息, (2006)07-2-0154-04

关键字:SC16IS752  串口扩展  ARM 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的