S3C2410 GPIO
s3c2410简介
B Host 2个端口的usb host 遵从OHCI Rev 1.0 和USB规范1.1版兼容 B Device 1个端口的USB Device 可带5个节点的USB Device 和USB规范1.1版兼容
6.SD Host 接口 和SD存储卡1.0版协议兼容 和SDIO存储卡1.0版协议兼容 带64个字节的FIFO存储器支持Tx/Rx 基于DMA或基于中断的操作 和多媒体卡2.11版协议兼容
字符型指针(int *)问。
S3C2410实例
1.和诸多元器件组合在一起供平时学习、实 验、开发等使用。 2.宏分布数字化工业测控系统 3.数码汽车音响和汽车综合信息监测系统 4.煤矿远程数字化测控安全系统 5.视频监控系统
s3c2410引脚介绍
S3C2410共有272引脚,采 用FBGA封装,主要分为 总线控制信号、各类元器 件接口信号以及电源时钟 控制信号。引脚分布底视 图如图所示。各引脚名称 如书中表所示。
s3c2410特殊功能寄存器
寄存器的状态决定硬件如何工作,为了使硬件工作于某 种状态,可以通过修改寄存器的值来实现。 例如:S3C2410X处理器的工作频率可达203MHz,但决不是只 能工作于该频率。可以通过修改内部寄存器的值,使处理器 工作在不同的频率下,通常所说的超频就是通过修改CPU的 时钟相关的寄存器的值来实现的。 在S3C2410的地址空间0x48000000~0x60000000之间, 存有大量的SFR(Special Function Registers,特殊功能 寄存器)用于实现对内部外围模块的控制。
三星ARM2410简介
1.S3C2410 概述 2.S3C2410主要特性 3.s3c2410引脚介绍 4.s3c2410特殊功能寄存器 5.S3C2410实例
S3C2410中文手册第9章 IO端口
第九章I/O端口概述S3C2410有117个多功能的输入输出引脚,这些端口是:—端口A(GPA):23个输出口—端口B(GPB):11个输入输出口—端口C(GPC):16个输入输出口—端口D(GPD):16个输入输出口—端口E(GPE):16个输入输出口—端口F(GPF):8个输入输出口—端口G(GPG):16个输入输出口—端口H(GPH):11个输入输出口每个端口可以根据系统配置和设计需求通过软件配置成相应的功能。
在启动主程序之前,必须定义好每个引脚的功能。
如果某个引脚不用作复用功能,则可以将它配置成IO脚。
初始的引脚状态被无缝配置好的以避免产生问题。
表1 端口配置见英文版Table 9-1. S3C2410A Port Configuration端口控制描述端口控制寄存器(GPACON-BGHCON)在S3C2410中,大部分端口都是复用的,因此需要决定每个引脚使用哪个功能。
端口控制寄存器PnCON决定每个引脚的功能。
如果GPF0 – GPF7 and GPG0 – GPG7用于掉电模式的唤醒信号,这些端口必须被配置成中断模式。
端口数据寄存器(GPADAT-GPHDAT)如果端口被配置成输出端口,可以向PnDAT中的相关位写入数据;如果端口被配置成输入端口,可以从PnDAT中的相关位读入数据。
端口上拉电阻寄存器(GPBUP-GPHUP)端口上拉电阻寄存器控制每个端口组的上拉电阻的使能和禁止。
当相关位为0,上拉电阻使能;当相关位为1,上拉电阻禁止;当端口上拉电阻寄存器使能时,不管引脚选择什么功能(输入、输出、数据、外部中断等),上拉电阻都工作。
外部中断控制寄存器(EXTINTN)24个外部中断可响应各种信号请求方式。
EXTINTn寄存器可以配置如下信号请求方式:低电平触发、高电平触发、上升沿触发、下降沿触发、双边沿触发。
这8个外部中断引脚具有数字滤波器。
(见EINTFLTn相关)只有16个外部中断引脚(EINT [15:0])被用于唤醒源。
s3c2410按键驱动完整版
/* 2410 中断按键驱动*基于s3c2410的16个按键驱动,采用中断的方式,实现了阻塞和非阻塞,并用定时*器进行了消抖处理消抖,也实现的异步通知,POLL机制,每个源文件我都加了比较*详细的注释。
各位刚刚学习ARM/Linux *驱动的同学可以参考。
*/驱动源文件*/#include<linux/>#include<linux/>#include<linux/>#include<linux/>#include<linux/>#include<asm/>#include<linux/>#include<linux/>#include<asm/arch/>#include<linux/>static unsigned int buttons_major = 0;in, col_line[i].col_output);s3c2410_gpio_setpin(col_line[i].pin,0);}}static void set_col_input(void){int i;for(i = 0;i<4;i++){s3c2410_gpio_cfgpin(col_line[i].pin, col_line[i].col_input);s3c2410_gpio_pullup(col_line[i].pin, 0);in) == 0)col = i;}/*根据列线与行线保存键值*/fs_buttons->key_buttons= key_comfirm[row][col];/*恢复*//*将列线恢复为输出,并且输出为0*/set_col_output();/*将产生中断的管脚,再次恢复为中断功能*/s3c2410_gpio_cfgpin(cur_pin->pin,cur_pin->int_put);/*唤醒休眠的进程*/wake_up_interruptible(&(fs_buttons->buttons_wq));/*异步通知,发信号*/kill_fasync(&fsbuttons_fasync, SIGIO, POLLIN);return IRQ_HANDLED;}rq, buttons_irq_handler_fun, IRQF_TRIGGER_FALLING, fspin_desc[i].name, &fspin_desc[i]);/*初始化定时器*/init_timer(&fs_buttons->button_timer);fs_buttons-> = jiffies +5;fs_buttons-> =(void *)button_timer_fun;/*加载定时器*/add_timer(&fs_buttons->button_timer);/*初始化等待队列头*/init_waitqueue_head(&fs_buttons->buttons_wq);return 0;}static ssize_t buttons_read(struct file *filp, char __user *buf, size_t count, loff_t*opps){int ret;/*1.如果没有按键,而且应用程序是以非阻塞方式打开,就直接返回*/if((fs_buttons->key_buttons == 0) && (filp->f_flags & O_NONBLOCK)) return 0;/*1.如果没有键值key_buttons = 0 ,则休眠*/wait_event_interruptible(fs_buttons->buttons_wq,fs_buttons->key_buttons);/*2.如果有键值,将键值返回用户空间*//*如果拷贝成功则返回0,否则返回剩下的没有拷贝完的字节数*/ret = copy_to_user(buf, &fs_buttons->key_buttons, count);fs_buttons->key_buttons = 0; 进程挂入等待队列,但是并不休眠*/poll_wait(file, &(fs_buttons->buttons_wq), wait);/*2.查看是否有事件*/if(fs_buttons->key_buttons)mask |= POLLIN;return mask;}int buttons_close(struct inode *inode, struct file *file) {int i;for(i = 0;i<4;i++)free_irq(fspin_desc[i].irq, &fspin_desc[i]);return 0;}struct file_operations buttons_fops={.owner =THIS_MODULE,.open =buttons_open,.read =buttons_read,.write =buttons_write,.poll =buttons_poll,.release =buttons_close,.fasync =buttons_fasync,};/*构建和初始化fsbuttons_cdev结构体*/static void setup_fsbuttons_cdev(void){/*给cdev结构体分配空间*/fs_buttons->buttons_cdev = cdev_alloc();/*初始化*/cdev_init(fs_buttons->buttons_cdev, &buttons_fops);/*加载cdev*/cdev_add(fs_buttons->buttons_cdev, MKDEV(buttons_major,0), 1); }static int __init buttons_init(void){int devno;/*申请设备号,注册*/if(buttons_major){/*静态方式*/devno = MKDEV(buttons_major,0);register_chrdev_region(devno, 1, "buttons_driver");}else{/*动态方式*/alloc_chrdev_region(&devno, 0, 1, "buttons_driver");buttons_major = MAJOR(devno);}/*2.分配空间,*GFP_KERNEL:如果分配空间不成功,则会休眠*/fs_buttons =kmalloc(sizeof(fs_buttons), GFP_KERNEL);/*构建cdev*/setup_fsbuttons_cdev();/*创建设备文件*/fs_buttons->buttons_class = class_create(THIS_MODULE,"buttons");class_device_create(fs_buttons->buttons_class, NULL,MKDEV(buttons_major,0), NULL, "buttons");return 0;}static void __exit buttons_exit(void){unregister_chrdev_region(MKDEV(buttons_major,0), 1);kfree(fs_buttons);cdev_del(fs_buttons->buttons_cdev);class_device_destroy(fs_buttons->buttons_class, MKDEV(buttons_major,0));class_destroy(fs_buttons->buttons_class);}module_init(buttons_init);module_exit(buttons_exit);MODULE_LICENSE("GPL");/* */#include<>#include<>#include <sys/>#include <sys/>#include <>int main(void){int fd = -1;int val = -1;int ret = -1;d = fd;poll_fd[0].events = POLLIN;while(1){ret =poll(poll_fd,1,5000);if(ret>0){read(poll_fd[0].fd,&val,4);printf("val =%d\n",val);}else if(ret ==0){printf("timeout!\n");}else{printf("error!\n");}}return 0;}/* */#include <>#include <>#include <sys/>#include <sys/>#include <>#include <>#include <>#include <>#include <>int fd;/*1.实现信号处理函数*/void signal_function(int signum){unsigned int val;static int cnt = 0;printf("get singal %d, cnt = %d\n", signum, cnt++);read(fd,&val,4);printf("val =%d\n",val);}int main(int argc, char**argv){int flags;fd =open("/dev/buttons",O_RDWR);if(fd<0){printf("cannot open /dev/buttons!\n");return -1;}/*2.将信号与信号处理函数绑定*/signal(SIGIO, signal_function);/*3.设置信号的拥有者为本进程*/fcntl(fd,F_SETOWN,getpid()); 置为异步通知的模式*/flags |=FASYNC;fcntl(fd,F_SETFL,flags); //调用到驱动中的fasync功能函数while(1){/*做自己的事情*/sleep(3);}return 0;}。
嵌入式系统开发3S3C2410主要外设功能部件
ARM汇编指令
UART异步串口通信
通用I/O端口
Nand Flash控制器
NOR Flash接口电路
1. ARM汇编指令
加载/存储指令
LDR:LDR{条件}目的寄存器,<存储器地址> 用于将存储器中的一个32位的字数据传送到 目的寄存器中;常用于从存储器中读取32为 的字数据到通用寄存器。 ldr r0,=rPCONE //寄存器地址存放到通用寄存器中
GPxCON寄存器:它用于配置引脚的功能 端口A与端口B-H在功能上有所不同,GPACON中每一位对应
一根引脚(共23根引脚);GPACON通常被设为全1,以便访问 外部存储设备;
端口B-H在寄存器操作上完全相同,GPxCon中每两位控制一 根引脚,00表示输入,01表示输出,10表示特殊功能,11保留 不用 GPxDAT寄存器:用于读写引脚
UART LINE CONTROL REGISTER
奇偶模式 停止位数 字节长度
UART CONTROL REGISTER
UART TX/RX STATUS REGISTER
发送器为空 发送缓存器为空 接收缓存器准备
UART TRANSMIT BUFFER REGISTER
UART RECEIVE BUFFER REGISTER
UART TTL电平 3.3V 正逻辑 RS232 +5~+12为低,-12~-5为高 负逻辑 RS485 +2~+6为高,-2~-6为低 正逻辑
电平为线间压差、10Mbps、3000m MAX232、MAX485
UART异步串口的传输格式:
以字符为传输单位 字符间的时间间隔不定,字符内的时间间隔固定 空闲位、起始位、资料位、奇偶校验位、停止位
s3c2410_gpio_cfgpin等内核导出函数
s3c2410_gpio_cfgpin等内核导出函数2011-06-29 23:45:34| 分类:嵌入式驱动| 标签:|字号大中小订阅s3c2410_gpio_cfgpin等内核导出函数收藏//这里面的函数都是内核导出函数/plat-s3c24XX/gpio.c中#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/io.h>#include <mach/hardware.h>#include <mach/gpio-fns.h>#include <asm/irq.h>#include <mach/regs-gpio.h>//设置gpio的工作模式,是输入,输出还是其他的//s3c2410_gpio_cfgpin(S3C2410_GPB(5),S3C2410_GPIO_INPUT),就是设置GPB5为输入模式void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long mask;unsigned long con;unsigned long flags;if (pin < S3C2410_GPIO_BANKB) {mask = 1 << S3C2410_GPIO_OFFSET(pin);} else {mask = 3 << S3C2410_GPIO_OFFSET(pin)*2;}switch (function) {case S3C2410_GPIO_LEAVE:mask = 0;function = 0;break;case S3C2410_GPIO_INPUT:case S3C2410_GPIO_OUTPUT:case S3C2410_GPIO_SFN2:case S3C2410_GPIO_SFN3:if (pin < S3C2410_GPIO_BANKB) {function -= 1;function &= 1;function <<= S3C2410_GPIO_OFFSET(pin);} else {function &= 3;function <<= S3C2410_GPIO_OFFSET(pin)*2;}}/* modify the specified register wwith IRQs off */local_irq_save(flags);con = __raw_readl(base + 0x00);con &= ~mask;con |= function;__raw_writel(con, base + 0x00);local_irq_restore(flags);}EXPORT_SYMBOL(s3c2410_gpio_cfgpin);//作用:返回对应的GPIO的配置情况,例如pin=s3c2410_GPB5,则unsigned int s3c2410_gpio_getcfg(unsigned int pin){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long val = __raw_readl(base);if (pin < S3C2410_GPIO_BANKB) {val >>= S3C2410_GPIO_OFFSET(pin);val &= 1;val += 1;} else {val >>= S3C2410_GPIO_OFFSET(pin)*2;val &= 3;}return val | S3C2410_GPIO_INPUT;}EXPORT_SYMBOL(s3c2410_gpio_getcfg);//设置相应的GPIO的上拉电阻,当to为1时候,相应的pin引脚设置为1,表示该GPIO 要上拉电阻,to为0时候,相应的pin引脚配置为0,表示不要上拉电阻void s3c2410_gpio_pullup(unsigned int pin, unsigned int to){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long offs = S3C2410_GPIO_OFFSET(pin);unsigned long flags;unsigned long up;if (pin < S3C2410_GPIO_BANKB)return;local_irq_save(flags);up = __raw_readl(base + 0x08);up &= ~(1L << offs);up |= to << offs;__raw_writel(up, base + 0x08);local_irq_restore(flags);}EXPORT_SYMBOL(s3c2410_gpio_pullup);int s3c2410_gpio_getpull(unsigned int pin){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long offs = S3C2410_GPIO_OFFSET(pin);if (pin < S3C2410_GPIO_BANKB)return -EINVAL;return (__raw_readl(base + 0x08) & (1L << offs)) ? 1 : 0;}EXPORT_SYMBOL(s3c2410_gpio_getpull);//当GPIO的工作为输入时候,设置某个GPIO的值//s3c2410_gpio_setpin(S3C2410_GPB(5),0),设置GPB5的输入值是0,就是低电平,to为1,表示该pin输出为1void s3c2410_gpio_setpin(unsigned int pin, unsigned int to){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long offs = S3C2410_GPIO_OFFSET(pin);unsigned long flags;unsigned long dat;local_irq_save(flags);dat = __raw_readl(base + 0x04);dat &= ~(1 << offs);dat |= to << offs;__raw_writel(dat, base + 0x04);local_irq_restore(flags);}EXPORT_SYMBOL(s3c2410_gpio_setpin);//当GPIO为输出模式时候,获取GPIO的输出数值//s3c2410_gpio_getpin(S3C2410_GPB(5)),获取GPB5的输出值unsigned int s3c2410_gpio_getpin(unsigned int pin){void __iomem *base = S3C24XX_GPIO_BASE(pin);unsigned long offs = S3C2410_GPIO_OFFSET(pin);return __raw_readl(base + 0x04) & (1<< offs);}EXPORT_SYMBOL(s3c2410_gpio_getpin);unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change) {unsigned long flags;unsigned long misccr;local_irq_save(flags);misccr = __raw_readl(S3C24XX_MISCCR);misccr &= ~clear;misccr ^= change;__raw_writel(misccr, S3C24XX_MISCCR);local_irq_restore(flags);return misccr;}EXPORT_SYMBOL(s3c2410_modify_misccr);int s3c2410_gpio_getirq(unsigned int pin){if (pin < S3C2410_GPF(0) || pin > S3C2410_GPG(15))return -EINVAL; /* not valid interrupts */if (pin < S3C2410_GPG(0) && pin > S3C2410_GPF(7))return -EINVAL; /* not valid pin */if (pin <。
S3C2410 GPIO C语言跑马灯实验
实验2 S3C2410 GPIO C语言跑马灯实验一、实验目的掌握S3C2410 通用I/O口的特点,用法和C语言编程技巧,以及MDK GPIO的可视化配置方法,理解S3C2410启动代码中和GPIO有关的程序段。
二、实验预备知识熟悉UP-NETARM2410实验箱的结构,S3C2410的外设接口电路,熟悉MDK编程软件的使用方法,熟悉C语言程序设计的一般方法。
三、实验内容编写程序编译并下载到UP-NETARM2410实验箱S3C2410的Nand型Flash芯片K9F1208中,使得GPC5/GPC6/GPC7上所接的三个LED循环亮灭。
四、参考程序程序1(无S3C2410。
H)1 #define GPCDA T_ADDR (*(volatile unsigned int *)0x56000024)2 #define LED1_MASK 0x203 #define LED2_MASK 0x404 #define LED3_MASK 0x8056 void Delay(int n)7 {8 int i,j;9 for(i=0;i<n;i++)10 {11 for(j=0;j<n;j++)12 {13 }14 }15 }1617 int main()18 {19 int nLED;20 nLED = 0;21 while(1)22 {23 nLED = 0;24 nLED ^=(LED2_MASK | LED3_MASK);// LED1 light25 GPCDA T_ADDR = nLED;26 Delay(0x300);2728 nLED = 0;29nLED ^=(LED1_MASK | LED3_MASK);// LED2 light30 GPCDA T_ADDR = nLED;31 Delay(0x300);3233 nLED = 0;34 nLED ^=(LED1_MASK | LED2_MASK);// LED3 light35 GPCDA T_ADDR = nLED;36 Delay(0x300);3738 }3940 }建议用程序2程序2(有S3C2410。
实验2 S3C2410GPIO控制实验
实验2 S3C2410GPIO控制实验一、实验目的1.熟悉ADS1.2 开发环境,正确使用仿真调试电缆进行编译、下载、调试。
2.了解S3C2410 的通用I/O 接口,3.掌握I/0 功能的复用并熟练的配置,4.对相应I/0接口进行编程实验,控制实验箱LED 灯点亮。
二、实验设备硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+ARM-LINUX 开发环境。
三、预备知识S3C2410 CPU 共有117个多功能复用输入输出口,分为8组端口:●4个16位的I/O端口(PORT C、PORT D、PORT E、PORT G)●2个11位的I/O端口(PORT B 和PORT H)●1个8位的I/O端口(PORT F)●1个23位的I/O端口(PORT A)这些通用的GPI/O接口,是可配置的, PORTA除功能口外,它们仅用作输出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作为输入输出口使用。
配置这些端口,是通过一些寄存器来实现的,这些寄存器均有各自的地址,位长32位。
往该地址中写入相应的数据,即可实现功能及数据配置。
GPACON (0x56000000) //Port A controlGPADAT (0x56000004) //Port A dataGPBCON (0x56000010) //Port B controlGPBDAT (0x56000014) //Port B dataGPBUP (0x56000018) //Pull-up control BGPCCON (0x56000020) //Port C controlGPCDAT (0x56000024) //Port C dataGPCUP (0x56000028) //Pull-up control CGPDCON (0x56000030) //Port D control GPDDAT (0x56000034) //Port D data GPDUP (0x56000038) //Pull-up control D GPECON (0x56000040) //Port E control GPEDAT (0x56000044) //Port E data GPEUP (0x56000048) //Pull-up control E GPFCON (0x56000050) //Port F control GPFDAT (0x56000054) //Port F data GPFUP (0x56000058) //Pull-up control F GPGCON (0x56000060) //Port G control GPGDAT (0x56000064) //Port G data GPGUP (0x56000068) //Pull-up control G GPHCON (0x56000070) //Port H control GPHDAT (0x56000074) //Port H data GPHUP (0x56000078) //Pull-up control H 现用C口举例说明。
s3c2410中文手册
s3c2410中文手册简介S3C2410 是一种嵌入式处理器,由韩国三星电子公司设计和制造。
它是一款高度集成的 ARM 架构芯片,广泛应用于各种移动设备中,如智能手机、平板电脑、PDA 等。
本手册将详细介绍 S3C2410 芯片的特性、功能和使用方法,帮助开发人员更好地理解和应用该芯片。
芯片特性S3C2410 芯片具有以下主要特性:1.ARM920T 内核: S3C2410 芯片采用了 ARM920T 内核,它是一种高性能、低功耗的 32 位 RISC 处理器。
ARM920T 内核支持 ARMv4T 指令集,并具有强大的计算和处理能力。
2.高度集成的外设: S3C2410 芯片内集成了许多常用的外围设备,包括 UART、SPI、I2C、PWM 等。
这些外设可满足各种应用需求,简化了系统设计和连接。
3.多种接口: S3C2410 芯片提供了丰富的接口,如LCD 控制器、触摸屏控制器、SDIO 控制器等。
这些接口允许连接各种外部设备,如显示屏、输入设备、存储卡等,实现更丰富的功能。
4.低功耗设计: S3C2410 芯片采用先进的低功耗设计技术,具有很低的静态功耗和动态功耗。
这使得它非常适合于移动设备,延长了电池寿命。
芯片功能GPIOS3C2410 芯片提供了多个 GPIO 管脚,用来实现输入和输出功能。
GPIO 管脚可以通过软件配置为输入模式或输出模式,并可以设置电平状态。
开发人员可以利用GPIO 实现各种功能,如控制 LED 灯、读取按键状态等。
UARTS3C2410 芯片内集成了多个 UART 模块,用于串口通信。
每个 UART 模块都提供了数据传输和接收的功能,并支持多种通信协议,如 RS232、RS485 等。
开发人员可以使用 UART 实现与外部设备的串口通信。
LCD 控制器S3C2410 芯片具有强大的 LCD 控制器,支持多种显示模式和分辨率。
LCD 控制器可以控制显示屏的像素点,实现图形显示和文字显示功能。
第5章_基于S3C2410的系统硬件设计
第5章_基于S3C2410的系统硬件设计5.1引言在第4章中,我们介绍了S3C2410处理器的特性和功能。
本章将介绍基于S3C2410的系统硬件设计。
具体而言,我们将讨论系统的主要硬件模块,包括处理器的外围设备、存储器、输入输出接口等。
5.2系统总体设计__________________________________________________S3C241_________________________________________________Flash 存储_________________________________________________RAM存储_________________________________________________LCD显示_________________________________________________输入设_________________________________________________在这个系统中,S3C2410作为处理器负责控制整个系统的工作。
Flash存储器用于存储程序代码和数据,RAM存储器用于存储运行时数据。
LCD显示屏用于系统的图形界面显示,输入设备用于用户与系统的交互。
5.3处理器的外围设备S3C2410处理器的外围设备包括:-时钟模块:提供处理器时钟信号。
-外部中断控制器:负责处理外部中断信号。
-DMA控制器:用于数据的直接内存访问。
-UART接口:用于串行通信。
-USB接口:用于连接外部USB设备。
-SPI接口:用于串行外围设备的通信。
-I2C总线:用于连接各种外围设备。
-GPIO控制器:用于控制通用输入输出。
5.4存储器系统中的存储器主要包括Flash存储器和RAM存储器。
Flash存储器是非易失性存储器,用于存储程序代码、数据和系统配置信息。
在系统启动时,处理器从Flash存储器中加载程序代码,并将其存储到RAM存储器中执行。
第五章 S3C2410的IO口和IO操作
5.2.8 端口H控制寄存器和功能配置
• 1。端口H控制寄存器(GPHCON)和功能配 置 • 2。端口H数据寄存器(GPHDAT)和功能配 置 • 3。端口H上拉寄存器(GPHUP)和功能配 置
5.3 I/O口控制C语言编程例
• 5.3.1 硬件电路
ቤተ መጻሕፍቲ ባይዱ
5.3.2 参考程序
• • • • • • • • • • • • #include"2410lib.h" #include"2410addr.h" #include"def.h" //------------------------------------------------------------------------------------------------------------------// 发光二极管逐个点亮 //-------------------------------------------------------------------------------------------------------------------void led_on(void) { int i,nOut; nOut=0xF0; rGPFDAT=nOut & 0x70; //GPF7管脚输出低电平,D1204亮,其它二极管 灭 for(i=0;i<100000;i++); //延时
• • • •
• • • • • • • • • • •
{ rGPFCON=0x5500; //F数据口7、6、5、4位做输出 rGPFUP=0; //F口上拉允许,F口做基本I/O rGPBCON=rGPBCON& 0xFFFFFC∣1; //蜂鸣器配置,PB1口接蜂鸣器,输 出 uart_printf(“\I/O(Diode Led)Test Example\n”);//超级终端上显示提示 rGPBDAT & = 0xFFFFFE; //蜂鸣器响,低电平有效 led_on(); //发光二极管亮 led_off(); //发光二极管灭 led_on_off(); //发光二极管循环亮灭 rGPBDAT∣=1; // 蜂鸣器停 delay(1000); rGPFCON=0x55aa; //GPFCON 15:14;13:12;11:10;9:8=01;01; 01;01 //GPF7、6、5、4做输出 uart_printf(“end.\n”); //超级终端上显示提示 }
S3C2410GPIO及AD转换
总结与展望
● 优 势 : . 性 能 稳 定 :S3C2410 GPIO及D转 换具 有较 高的 稳定 性能 够保 证数 据的 准确 性和 可靠 性。 b . 兼 容 性 强 : S3C2410 GPIO及D转 换支 持多 种接 口可 以方 便地 与其 他设 备进 行通 信。 c . 功 耗 低 :S3C2410 GPIO及D转换 的功 耗 较低可以降低设备的能耗提高设备的续航能力。
D转换器的精度和速度取决 于其内部结构和算法
工作原理:将模拟信号转 换为数字信号
转换精度:12位
转换速度:100kHz
应用领域:工业控制、医 疗设备、通信设备等
温度测量:通过D转换获取温度传感器的输出信号实现温度测量 压力测量:通过D转换获取压力传感器的输出信号实现压力测量 电流测量:通过D转换获取电流传感器的输出信号实现电流测量 电压测量:通过D转换获取电压传感器的输出信号实现电压测量
S3C2410 GPIO寄存器:用于控 制GPIO引脚的状态和功能
S3C2410 D转换寄存器:用于 控制D转换器的工作模式和数据 读取
S3C2410 GPIO控制寄存器: 用于设置GPIO引脚的输入输 出模式、中断触发方式等
S3C2410 D转换控制寄存器: 用于设置D转换器的采样频率、 分辨率等
GPIO在S3C2410芯 片中的作用
GPIO的基本操作
GPIO的应用场景
GPIO的常见问题及 解决方案
D转换(模数转换)
添加标题
D转换:将模拟信号 转换为数字信号的过 程
添加标题
主要应用:传感器、 音频、视频等领域
添加标题
转换方式:逐次比较、 双积分、逐次逼近等
添加标题
转换精度:取决于DC 的分辨率和采样频率
s3c2410-io映射详解
/* s3c2410_map_io** register the standard cpu IO areas, and any passed in from the* machine specific initialisation.*/注册标准CPU的IO领域,并通过从任何特定的机器初始化。
struct cpu_table {unsigned long idcode;unsigned long idmask;void (*map_io)(struct map_desc *mach_desc, int size);void (*init_uarts)(struct s3c2410_uartcfg *cfg, int no);void (*init_clocks)(int xtal);int (*init)(void);const char *name;};s3c24xx_init_io()-→ iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));smdk2410_map_io()---→s3c24xx_init_io()MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch* to SMDK2410 *//* Maintainer: Jonas Dietsche */.phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_V A_UART) >> 18) & 0xfffc,.boot_params = S3C2410_SDRAM_PA + 0x100,.map_io = smdk2410_map_io,.init_irq = s3c24xx_init_irq,.init_machine = smdk2410_init,.timer = &s3c24xx_timer,MACHINE_ENDvoid __init s3c2410_map_io(struct map_desc *mach_desc, int mach_size){/* register our io-tables */iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));iotable_init(mach_desc, mach_size);}Cpu.c (linux-2.6.22.6\arch\arm\plat-s3c24xx):.map_io = s3c2410_map_io,E:\华清远见资料\zhihua_file1《ARM Linux静态映射分析.pdf》研究这个就够了:Cpu.c (linux-2.6.22.6\arch\arm\plat-s3c24xx): IODESC_ENT(GPIO),/* minimal IO mapping */static struct map_desc s3c_iodesc[] __initdata = {IODESC_ENT(GPIO),IODESC_ENT(IRQ),IODESC_ENT(MEMCTRL),IODESC_ENT(UART)};linux/include/asm-arm/arch-s3c2410/map.h#define S3C2410_PA_GPIO (0x56000000)#define S3C24XX_PA_GPIO S3C2410_PA_GPIOstruct map_desc {unsigned long virtual;unsigned long pfn;unsigned long length;unsigned int type;};#def ine IODESC_ENT(x) {(unsignedlong)S3C24XX_V A_##x, __phys_to_pf n(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }#define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT)IODESC_ENT(GPIO)------- S3C24XX_V A_GPIO, __phys_to_pfn(S3C24XX_P A_GPIO),从这里可以看出来了,把物理地址(寄存器相关的代映射到V A)#define MACHINE_START(_type,_name) \static const struct machine_desc __mach_desc_##_type \__used \__attribute__((__section__(".init"))) = { \.nr = MACH_TYPE_##_type, \.name = _name,#define MACHINE_END \MACHINE_START(S3C2440, "SMDK2440").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_V A_UART) >> 18) & 0xfffc,.boot_params = S3C2410_SDRAM_PA + 0x100,.init_irq = s3c24xx_init_irq,.map_io = smdk2440_map_io,.init_machine = smdk2440_machine_init,.timer = &s3c24xx_timer,MACHINE_END#define MACHINE_START(S3C2440,SMDK2440)\static const struct machine_desc __mach_desc_S3C2440 \__used \__attribute__((__section__(".init"))) = { \.nr = MACH_TYPE_S3C2440, \.name = SMDK2440,#define MACHINE_END \ //MACHINE_ENC = };这个符号呀,作为结构体的结束部分。
S3C2410A通用I
S3C2410A通用I/O接口及应用S3C2410A内部集成了8组,共117个I/O引脚GPIO。
GPIO原理与结构:实际上可看成处理器的一批可编程的输入/输出引脚,CPU 可通过对他们进行读和写操作。
GPIO引脚编程设置:每一组GPIO由数据寄存器GPnDAT,控制寄存器GPnCON,上拉寄存器GPnUP。
GPIO的初始化输入/输出:以组位单位进行,GPIO A~GPIO H 共8组初始化是依据实际应用需求,通过编程进行设置。
输入操作是从数据寄存器的相应位中读出数据,输出是将数据写入到数据寄存器的被设置为输出的相应位。
例1:PORT A具有23个引脚,作为I/O口用时,只能作为输出用,还可以定义为功能引脚。
GPA CON 0X56000000 R/W [22 :0] 0:输出;1:功能复位值:0X7FFFFFGPA DAT 0X56000004 R/W [22:0] 未定义#define rGPA CON (*(volatile unsigned *) 0X56000000) // 定义PORTA的控制寄存器#define rGPA DAT (*(volatile unsigned *) 0X56000004) //定义PORTA的数据寄存器rGPA CON= 0X7ffffc; //GPA1 ~ GPA0被定义为输出引脚,其他引脚定义为规定的引脚例2:rGPA DAT=0X2输出数据,0X2被写入到PORT A 的数据寄存器GPA DAT,其结果是在引脚GPA1 输出高点平;GPA2引脚输出低电平。
例2:#define rGPB CON (*(volatile unsigned *) 0X56000010) // 定义PORTB的控制寄存器#define rGPB DAT (*(volatile unsigned *) 0X56000014) //定义PORTB的数据寄存器rGPB CON= 0X3fffff1; // GPB0被定义为输出引脚,GPB1 引脚定义为输入引脚int arGPB DAT = 0X1;a = rGPB DAT ;例3:利用S3C2410A的GPIO实现一个简单的报警系统,要求当报警条件成立时,报警灯亮,同时蜂鸣器响;报警条件不成立时,报警灯不亮,蜂鸣器停止发声。
S3C2410 GPIO
ADDR19
–
–
GPA3
Output only
ADDR18
–
–
GPA2
Output only
ADDR17
–
–
GPA1
Output only
ADDR16
–
–
GPA0
Output only
ADDR0
–
–
PortBSelectablePinFunctions
GPB10
Input/output
O
X轴正端开关控制信号
XMON
O
X轴负端开关控制信号
nYPON
O
Y轴正端开关控制信号
YMON
O
Y轴负端开关控制信号
USB主设备
DN [1:0]
IO
USB主设备的DATA (–)信号(需接下拉电阻15K)
DP [1:0]
IO
USB主设备的DATA (+)信号(需接下拉电阻15K)
USB从设备
PDN0
IO
nWAIT
I
nWAIT信号要求延长总线周期.只要nWAIT是低电平,当前总线周期
nSRAS
O
SDRAM行地址使能
nSCAS
O
SDRAM列地址使能
nSCS[1:0]
O
SDRAM片选
DQM [3:0]
O
SDRAM数据屏蔽
SCLK [1:0]
O
SDRAM时钟
SCKE
O
SDRAM时钟使能
nBE[3:0]
O
高字节/低字节使能(在16-位SDRAM中使用)
O
SD时钟
General Port
S3C2410GPIO及AD转换
//Port E控制寄存器 #definerGPECON (*(volatile unsigned*)0x56000040) //Port E数据寄存器 #definerGPEDAT (*(volatile unsigned*)0x56000044) //Port E上拉电阻禁止寄存器 #definerGPEUP (*(volatile unsigned*)0x56000048) //Port F控制寄存器 #definerGPFCON (*(volatile unsigned*)0x56000050) //Port F数据寄存器 #definerGPFDAT (*(volatile unsigned*)0x56000054) //Port F上拉电阻禁止寄存器 #definerGPFUP (*(volatile unsigned*)0x56000058)
void Main(void){ int flag,i; Target Init();//进行硬件初始化操作,包括对I/O口的初始化操作 for(;;){ if(flag = = 0){ for(i = 0;i < 1000000;i++); //延时 rGPGCON= rGPGCON&0xfff0ffff | 0x00050000;//配置第8、第 //9位为输出引脚 rGPGDAT= rGPGDAT&0xeff | 0x200; //第8位输出为低电平 //第9位输出高电平 for(i = 0;i< 10000000;i++); //延时 flag = 1; }
计数式A/D转换器的转换过程如下: ① 首先/CLR(开始转换信号)有效(由高电平变成低电平),使 计数器复位,计数器输出数字信号为00000000,这个00000000的输 出送至8位D/A转换器,8位D/A转换器也输出0V模拟信号。 ② 当/CLR恢复为高电平时.计数器准备计数。此时,在比较器输 入端上待转换的模拟输入电压Vi大于VO(0V),比较器输出高电 平,使计数控制信号C为1。这样,计数器开始计数。 ③ 从此计数器的输出不断增加,D/A转换器输入端得到的数字量也 不断增加,致使输出电压VO不断上升。在VO<Vi时,比较器的输 出总是保持高电平,计数器不断地计数。 ④ 当VO上升到某值时,出现VO>Vi的情况时,此时,比较器的输 出为低电平,使计数控制信号C为0,计数器停止计数。这时候数字 输出量D7~D0就是与模拟电压等效的数字量。计数控制信号由高 变低的负跳变也是A/D转换的结束信号,表示已完成一次A/D转换。 计数式A/D转换器结构简单,但转换速度较慢。
S3C2410的GPIO管脚第二功能
S3C2410的GPIO管脚第二功能GPACON[22] nFCE : NAND Flash 片选使能(输出)[21] nRSTOUT=nRESET&nWDTRST&SW_RESET(MISCCR[16]) (输入输出)For external device reset controlnRESET: nRESET suspends(吊,悬;推迟)any operation in progress(前进,进展;进步)and places S3C2410X into a knownreset state. For a reset, nRESET must be held to L level for at least 4 FCLK afterthe processor power has been stabilized.[20] nFRE :Nand Flash Read Enable (输出)[19] nFWE : NAND Flash Write Enable (输出)[18] ALE : 地址锁存使能(输出) 2410的例子中连接了nand flash[17] CLE : 命令锁存使能(输出) 2410的例子中连接了nand flash[16] nGCS5 : SROM的片选信号,128M空间0x28000000—0x30000000[15] nGCS4 : SROM的片选信号,128M空间0x20000000—0x28000000[14] nGCS3 : SROM的片选信号,128M空间0x18000000—0x20000000[13] nGCS2 : SROM的片选信号,128M空间0x10000000—0x18000000[12] nGCS1 : SROM的片选信号,128M空间0x08000000—0x10000000[11] ADDR26[10]..[1] ADDR16[0] ADDR0GPBCON[10] nXDREQ0 : 0号DMA通道的一个请求源(该通道有5个请求源)佐证:nXDREQ0 and nXDREQ1represent two external sources(External Devices),[9] nXDACK0 : 0号DMA通道的应答信号[8] nXDREQ1 : 1号DMA通道的一个请求源(该通道有5个请求源)佐证:nXDREQ0 and nXDREQ1represent two external sources(External Devices),[7] nXDACK1 : 1号DMA通道的应答信号[6] nXBREQ : (Bus Hold Request) allows another bus master to request control of the local bus.BACK active indicates that bus control has been granted. (输入)[5] nXBACK : nXBACK (Bus Hold Acknowledge) indicates that the S3C2410X has surrenderedcontrol of the local bus to another bus master. (输出)[4] TCLK0 : 外部时钟0,定时器0预分频器后面的分频器有5个选项(PCLK预分频后再分频1/2,1/4,,1/8,1/16,外部时钟TCLK)[3] TOUT3 : 定时器3的PWM输出[2] TOUT2 : 定时器2的PWM输出[1] TOUT1 : 定时器1的PWM输出[0] TOUT0 : 定时器0的PWM输出GPCCON[15] VD7 :LCD像素数据输出,液晶数据信号,根据液晶的要求连接….[8] VD0 : LCD像素数据输出,液晶数据信号,根据液晶的要求连接[7] LCDVF2 : TFT液晶的SEC TFT 信号REVB[6] LCDVF1 : TFT液晶的SEC TFT 信号REV[5] LCDVF0 : TFT液晶的SEC TFT 信号OE[4] VM : 连接液晶的数据使能信号[3] VFRAME : 液晶的帧同步信号[2] VLINE : 液晶的行同步信号[1] VCLK : 液晶时钟信号,VCLK(Hz)=HCLK/(CLKVAL x 2),CLKVAL在LCDCON1中[0] LEND : 液晶行结束信号,通常可以不接GPDCON[15] VD23 : LCD像素数据输出,液晶数据信号,根据液晶的要求连接…[0] VD8 : LCD像素数据输出,液晶数据信号,根据液晶的要求连接GPECON[15] IICSDA :IIC总线的数据信号[14] IICSCL :IIC总线的时钟信号[13] SPICLK0 : SPI clock[12] SPIMOSI0 : SPI接收数据线[11] SPIMISO0 : SPI发送数据线[10] SDDAT3 : SD卡数据[9] SDDAT2 : SD卡数据[8] SDDAT1 : SD卡数据[7] SDDAT0 : SD卡数据[6] SDCMD : SD receive response/ transmit command[5] SDCLK : SD clock[4] I2SSDO : IIS发送,是DMA的chanle2的一个请求源[3] I2SSDI : IIS接收,是DMA的chanle2的一个请求源[2] CDCLK : IIS总线中,CODEC system clock[1] I2SSCLK : IIS-bus serial clock[0] I2SLRCK : IIS-bus channel select clockGPFCON[7] EINT7 : 外部中断7的输入[6] EINT6 :[5] EINT5 :[4] EINT4 :[3] EINT3 :[2] EINT2 :[1] EINT1 :[0] EINT0 : 外部中断0的输入GPGCON[15] EINT23 : 外部中断23的输入…[0] EINT8 : 外部中断8的输入GPGCON 第四功能[15] nYPON : 触摸屏控制[14] YMON : 触摸屏控制[13] nXPON : 触摸屏控制[12] XMON : 触摸屏控制[11] TCLK :[7] SPICLK1 :[6] SPIMOSI1 :[5] SPIMISO1 :[4] LCD_PWREN :[3] nSS1 :[2] nSS0 :GPHCON[10] CLKOUT1 : 是一个时钟的输出端,输出的时钟由MISCCR寄存器[10:8]决定,CLKOUT1 outputsingnal source000 = MPLL CLK 001 = UPLL CLK 010 = FCLK011 = HCLK 100 = PCLK 101 = DCLK111x = Reserved[9] CLKOUT0 : 是一个时钟的输出端,输出的时钟由MISCCR寄存器[6:4]决定,CLKOUT1 outputsingnal source000 = MPLL CLK 001 = UPLL CLK 010 = FCLK011 = HCLK 100 = PCLK 101 = DCLK111x = Reserved[8] UEXTCLK : UART 在系统时钟下运行可支持高达230.4K的波特率,如果使用外部设备提供的UEXTCLK,UART 的速度还可以更高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信号IO描述总线控制器OM [1:0]I OM [1:0]在产品测试时可以将S3C2410A置于测速模式下。
它还决定nGCS0使能区域的总线宽度。
接在该引脚上的上拉或下拉电阻决定了它在复位期间的逻辑电平。
00:Nand-boot 01:16-bit 10:32-bit 11:Test modeADDR[26:0]O ADDR [26:0](地址总线)输出对应bank区内的要访问的地址DATA[31:0]IO DATA [31:0] (数据总线)在读取存储器时从该总线输入数据,在写存储器时输出数据。
该总线的宽度可以通过编程设定在8/6/32位。
nGCS [7:0]O nGCS [7:0] (通用片选) 当要访问的地址位于某个bank区内,那么该bank 对应的片选就会被激活。
操作周期和bank的大小是可编程的.nWE O nWE (写使能) 表示当前总线周期是一个写周期nOE O nOE (Output Enable) 表示当前总线周期是一个读周期nXBREQ I nXBREQ (总线占用请求) 允许其他需要占用总线的设备请求当地总线的控制权。
BACK有效时表示总线控制被承认了nXBACK O nXBACK (总线占用应答) 表示S3C2410A同意交出当地总线的控制权给总线的请求者。
nWAIT I nWAIT 信号要求延长总线周期. 只要nWAIT是低电平,当前总线周期nSRAS O SDRAM行地址使能nSCAS O SDRAM列地址使能nSCS [1:0]O SDRAM片选DQM [3:0]O SDRAM数据屏蔽SCLK [1:0]O SDRAM时钟SCKE O SDRAM时钟使能nBE [3:0]O高字节/低字节使能(在16-位SDRAM中使用)nWBE [3:0]O写字节使能NAND FlashCLE O命令锁存使能ALE O地址锁存使能nFCE O NAND Flash 片选使能nFRE O NAND Flash 读使能nFWE O NAND Flash 写使能NCON I NAND Flash 配置,如果没有使用NAND Flash控制器,它必须接一个上拉电阻。
R/nB I NAND Flash 准备好/忙。
如果没有使用NAND Flash控制器,它必须接一个上拉电阻。
LCD控制器单元VD [23:0]O STN/TFT/SEC TFT: LCD 数据总线LCD_PWREN O STN/TFT/SEC TFT: LCD屏电源使能控制信号VCLK O STN/TFT: LCD 时钟信号VFRAME O STN: LCD 帧信号VLINE O STN: LCD线信号VM O STN: VM 改变行和列电压的极性VSYNC O TFT: 垂直同步信号HSYNC O TFT: 水平同步信号VDEN O TFT: 数据使能信号LEND O TFT: 线结束信号STV O SEC TFT: SEC (Samsung Electronics Company) TFT LCD 屏控制信号CPV O SEC TFT: SEC (Samsung Electronics Company) TFT LCD屏控制信号LCD_HCLK O SEC TFT: SEC (Samsung Electronics Company) TFT LCD屏控制信号TP O SEC TFT: SEC (Samsung Electronics Company) TFT LCD屏控制信号STH O SEC TFT: SEC (Samsung Electronics Company) TFT LCD屏控制信号LCDVF [2:0]O SEC TFT: 特殊TFT LCD (OE/REV/REVB)的时序控制信号中断控制单元EINT [23:0]I外部中断请求DMAnXDREQ [1:0]I外部DMA请求nXDACK [1:0]O外部DMA应答异步串行口RxD [2:0]I异步串行口接收数据输入TxD [2:0]O异步串行口发送数据输出nCTS [1:0]I输入信号,被清零时,发送数据nRTS [1:0]O输出信号,请求发送UEXTCLK I异步串行口时钟信号ADCAIN [7:0]AI ADC输入信号[7:0]。
如果不使用,该引脚接地Vref AI ADC 参考电压IIC总线IICSDA IO IIC总线数据IICSCL IO IIC总线时钟IIS总线I2SLRCK IO IIS总线通道选择时钟I2SSDO O IIS总线串行数据输出I2SSDI I IIS总线串行数据输入I2SSCLK IO IIS总线串行时钟CDCLK O CODEC系统时钟触摸屏nXPON O X轴正端开关控制信号XMON O X轴负端开关控制信号nYPON O Y轴正端开关控制信号YMON O Y轴负端开关控制信号USB主设备DN [1:0]IO USB 主设备的DATA (–)信号(需接下拉电阻15K)DP [1:0]IO USB 主设备的DATA (+)信号(需接下拉电阻15K)USB从设备PDN0IO USB从设备的DATA (–)信号(需接下拉电阻470K)PDP0IO USB从设备的DATA (+)信号(需接下拉电阻1.5K)SPISPIMISO [1:0]IO当SPI配置为总线上的主设备,SPIMISO 是主设备的数据输入线。
如果SPI配置为总线上的从设备,则成为从设备的输出线。
PIMOSI [1:0]IO当SPI配置为总线上的主设备,SPIMISO 是主设备的数据输出线。
如果SPI配置为总线上的从设备,则成为从设备的输入线。
SPICLK [1:0]IO SPI 时钟nSS [1:0]I SPI 片选(针对从设备模式)SDSDDAT [3:0]IO SD接收/发送数据SDCMD IO SD接收回应/发送命令SDCLK O SD时钟General PortGPn [116:0]IO通用输入/输出端口(其中一些只能用作输出)TIMMER/PWMTOUT [3:0]O定时器输出[3:0]TCLK [1:0]I外部定时器时钟输入JTAG TEST LOGICnTRST I nTRST (TAP控制器复位)开始时复位TAP控制器。
如果使用调试器,需要连接一个10K的上拉电阻。
如果不使用调试器,nTRST引脚必须输入一个低电平脉冲(一般连接到nRESET)。
TMS I TMS (TAP控制器模式选择) 控制TAP控制器状态序列。
TMS 引脚需要连接一个10K的上拉电阻。
.TCK I TCK (TAP控制器时钟)为JTAG逻辑提供时钟输入。
TCK 引脚需要连接一个10K的上拉电阻。
TDI I TDI (TAP控制器数据输入) 测试指令和数据串行输入。
TDI 引脚需要连接一个10K的上拉电阻。
TDO O TDO (TAP控制器数据输出) 测试指令和数据的串行输出。
Reset Clock & PowernRESET ST nRESET信号将挂起任何操作,并将S3C2410A带入一个可知的复位状态。
一个有效的复位信号,必须是在处理器电源稳定之后,将nRESET保持低电平至少4个FCLK的时间。
nRSTOUT O外部设备复位控制(nRSTOUT = nRESET & nWDTRST & SW_RESET)PWREN O 2.0V 内核电压开关控制信号nBATT_FLT I电池状态探测器(不能够在掉电模式下,因电量低而唤醒处理器)如果它不使用,必须接高电平( 3.3V)OM [3:2]I OM [3:2]决定采用哪种时钟。
OM [3:2] = 00b,晶振用于MPLL CLK时钟源和UPLL CLK 时钟源。
OM [3:2] = 00b,晶振用于MPLL CLK 时钟源,EXTCLK用于UPLL CLK时钟源。
OM [3:2] = 10b,EXTCLK用于MPLL CLK时钟源,晶振用于UPLL CLK时钟源。
OM [3:2] = 11b,EXTCLK用于MPLL CLK时钟源和UPLL CLK时钟源EXTCLK I外部时钟源OM [3:2] = 00b,EXTCLK用于UPLL CLK时钟源。
OM [3:2] = 10b,EXTCLK用于MPLL CLK时钟源,晶振用于UPLL CLK时钟源。
OM [3:2] = 11b,EXTCLK用于MPLL CLK时钟源和UPLL CLK时钟源如果它不使用,必须接高电平( 3.3V)XTIpll AI内部振荡电路的晶振输入OM [3:2] = 00b,用于MPLL CLK时钟源和UPLL CLK 时钟源。
OM [3:2] = 00b,用于MPLL CLK 时钟源OM [3:2] = 10b,用于UPLLCLK时钟源。
如果它不使用,XTIpll必须接高电平(3.3V)XTOpll AO内部振荡电路的晶振输出OM [3:2] = 00b,用于MPLL CLK时钟源和UPLL CLK 时钟源。
MPLLCAP AI主时钟的环路滤波电容UPLLCAP AI USB时钟的环路滤波电容XTIrtc AI32.768 kHz的RTC晶振输入。
如果不被使用,必须接高电平(RTCVDD=1.8V).XTOrtc AO32.768 kHz的RTC晶振输出。
如果不使用它必须设为悬空CLKOUT [1:0]O时钟输出信号。
MISCCR寄存器的CLKSEL域设定了时钟输出的模式,包括:MPLL CLK, UPLL CLK, FCLK, HCLK 和PCLK.电源VDDalive P S3C2410A 复位电路和端口状态寄存器电源(1.8V / 2.0V)。
无论是正常模式还是掉电模式它都应该始终提供电源VDDi/VDDiarP S3C2410A的CPU内核逻辑电源(1.8V / 2.0V)mVSSi/VSSiarm P S3C2410A 内核逻辑VSSVDDi_MPLL P S3C2410A MPLL 模拟和数字VDD (1.8V / 2.0V).VSSi_MPLL P S3C2410A MPLL模拟和数字VSS.VDDOP P S3C2410A I/O 口VDD (3.3V)VDDMOP P S3C2410A 存储器I/O VDD3.3V:SCLK 最高133MHzVSSMOP P S3C2410A存储器I/O VSSVSSOP P S3C2410A I/O口VSSRTCVDD P RTC VDD (1.8 V, 不支持2.0 and 3.3V)(如果RTC不使用它必须连接到电源) VDDi_UPLL P S3C2410A UPLL 模拟和数字VDD (1.8V / 2.0V)VSSi_UPLL P S3C2410A UPLL模拟和数字VSSVDDA_ADC P S3C2410A ADC VDD (3.3V)VSSA_ADC P S3C2410A ADC VSS注意:1. I/O表示输入/输出2. AI/AO表示模拟输入/输出3. ST表示施密特触发4. P表示电源Port A Selectable Pin FunctionsGPA22Output only nFCE––GPA21Output only nRSTOUT––GPA20Output only nFRE––GPA19Output only nFWE––GPA18Output only ALE––GPA17Output only CLE––GPA16Output only nGCS5––GPA15Output only nGCS4––GPA14Output only nGCS3––GPA13Output only nGCS2––GPA12Output only nGCS1––GPA11Output only ADDR26––GPA10Output only ADDR25––GPA9Output only ADDR24––GPA8Output only ADDR23––GPA7Output only ADDR22––GPA6Output only ADDR21––GPA5Output only ADDR20––GPA4Output only ADDR19––GPA3Output only ADDR18––GPA2Output only ADDR17––GPA1Output only ADDR16––GPA0Output only ADDR0––Port B Selectable Pin FunctionsGPB10Input/output nXDREQ0––GPB9Input/output nXDACK0––GPB8Input/output nXDREQ1––GPB7Input/output nXDACK1––GPB6Input/output nXBREQ––GPB5Input/output nXBACK––GPB4Input/output TCLK0––GPB3Input/output TOUT3––GPB2Input/output TOUT2––GPB1Input/output TOUT1––GPB0Input/output TOUT0––Port C Selectable Pin FunctionsGPC15Input/output VD7––GPC14Input/output VD6––GPC13Input/output VD5––GPC12Input/output VD4––GPC11Input/output VD3––GPC10Input/output VD2––GPC9Input/output VD1––GPC8Input/output VD0––GPC7Input/output LCDVF2––GPC6Input/output LCDVF1––GPC5Input/output LCDVF0––GPC4Input/output VM––GPC3Input/output VFRAME––GPC2Input/output VLINE––GPC1Input/output VCLK––GPC0Input/output LEND––Port D Selectable Pin FunctionsGPD15Input/output VD23nSS0–GPD14Input/output VD22nSS1–GPD13Input/output VD21––GPD12Input/output VD20––GPD11Input/output VD19––GPD10Input/output VD18––GPD9Input/output VD17––GPD8Input/output VD16––GPD7Input/output VD15––GPD6Input/output VD14––GPD5Input/output VD13––GPD4Input/output VD12––GPD3Input/output VD11––GPD2Input/output VD10––GPD1Input/output VD9––GPD0Input/output VD8––Port E Selectable Pin FunctionsGPE15Input/output IICSDA––GPE14Input/output IICSCL––GPE13Input/output SPICLK0––GPE12Input/output SPIMOSI0––GPE11Input/output SPIMISO0––GPE10Input/output SDDAT3––GPE9Input/output SDDAT2––GPE8Input/output SDDAT1––GPE7Input/output SDDAT0––GPE6Input/output SDCMD––GPE5Input/output SDCLK––GPE4Input/output I2SSDO I2SSDI–GPE3Input/output I2SSDI nSS0–GPE2Input/output CDCLK––GPE1Input/output I2SSCLK––GPE0Input/output I2SLRCK––Port F Selectable Pin FunctionsGPF7Input/output EINT7––GPF6Input/output EINT6––GPF5Input/output EINT5––GPF4Input/output EINT4––GPF3Input/output EINT3––GPF2Input/output EINT2- - GPF1Input/output EINT1- - GPF0Input/output EINT0- - Port G Selectable-Pin-FunctionsGPG15Input/output EINT23nYPON–GPG14Input/output EINT22YMON–GPG13Input/output EINT21nXPON–GPG12Input/output EINT20XMON–GPG11Input/output EINT19TCLK1–GPG10Input/output EINT18––GPG9Input/output EINT17––GPG8Input/output EINT16––GPG7Input/output EINT15SPICLK1–GPG6Input/output EINT14SPIMOSI1–GPG5Input/output EINT13SPIMISO1–GPG4Input/output EINT12LCD_PWREN–GPG3Input/output EINT11nSS1–GPG2Input/output EINT10nSS0–GPG1Input/output EINT9––GPG0Input/output EINT8––Port H Selectable-Pin-FunctionsGPH10Input/output CLKOUT1GPH9Input/output CLKOUT0––GPH8Input/output UCLK––GPH7Input/output RXD2nCTS1–GPH6Input/output TXD2nRTS1–GPH5Input/output RXD1––GPH4Input/output TXD1––GPH3Input/output RXD0––GPH2Input/output TXD0––GPH1Input/output nRTS0––GPH0Input/output nCTS0––。