版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章输入输出控制引言本章学习目标掌握GPIO的基本原理和应用掌握LED灯点亮方法,并在基于开发板调试2熟悉PWM和ADC的基础原理熟悉各个寄存器功能掌握SPI的基本概念与工作方式5.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.1.1概述4GPIO是可编程的通用输入/输出接口,用于生成和采集特定应用的输入或输出信号,实现系统和外设之间的通信,方便系统对外设的控制。
如图5.1所示,GPIO模块主要接口如下:
(1)APB接口
(2)I/Opad的外部数据接口
(3)中断信号接口图5.1GPIO模块原理图5.1.2GPIO功能5GPIO接口具有以下功能特点:时钟源可选择:工作模式晶体时钟24M/40M、低功耗模式32K时钟。1组GPIO,共15个独立的可配置管脚。每个GPIO管脚都可单独控制传输方向。每个GPIO可以单独被配置为外部中断源。GPIO用作中断时有4种中断触发方式,中断时触发方式可配:
①上升沿触发;②下降沿触发;③高电平触发;④低电平触发。GPIO上报一个中断,CPU查询上报的GPIO编号。每个中断支持独立屏蔽的功能,脉冲中断支持可清除功能。
5.1.3GPIO工作方式6GPIO可以配置为输入或输出方式,通过GPIO_SWPORT_DDR配置。其中:当配置为输入方式时,不但可以通过管脚输入到输入端口寄存器GPIO_EXT_PORT,还可以作为外部中断源,以及外部的睡眠唤醒信号。当配置为输出方式时,配置GPIO_SWPORT_DR可以将配置数据输入到管脚上。①中断模式可选择电平触发或边沿触发,通过GPIO_INTTYPE_LEVEL配置。②电平触发可选择高电平触发或低电平触发,通过GPIO_INT_PLOARITY配置。③c)单沿触发可选择上升沿触发或下降沿触发,通过GPIO_INT_PLOARITY配置。④d)每个中断支持独立的使能,通过GPIO_INTEN配置。⑤e)每个中断支持独立的屏蔽,通过GPIO_INTMASK配置。
每个中断的状态支持可查询:屏蔽前的原始中断状态,通过GPIO_RAWINTSTATUS查询。屏蔽后的最终中断状态,通过GPIO_INTSTATUS查询。⑥f)脉冲中断支持可清除,通过GPIO_PORT_EOI配置。75.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.2点亮LED灯8LED灯位于开发板的左侧,如图5.2所示为NFC指示灯、运行指示灯、电源指示灯。我们需要控制运行指示灯。图5.3为运行指示灯电路原理图,一端接3.3V高电平电源,另一端接PCF8574IO扩展芯片的P2引脚。PCF8574的功能为用I2C来读取P0P7这8口接口的开关状态。引脚数量是有限的,利用PCF8574IO扩展芯片只需要占用主控芯片的3个引脚,就可以控制8个接口的开关状态,这样就实现了IO的扩展。图5.2
开发板指示灯位置图5.3指示灯电路原理图5.2点亮LED灯9
下面为PCF8574IO扩展芯片读写协议,要求第一个字节为地址数据。地址数据规定如图5.4所示,前四位为0100,A2、A1、A0三个数据根据电路原理图规定引脚高低电平。如图5.5所示,A1、A2为低电平,即为0,A0为高电平,即为1。所以从地址整体连起来为0100001X,其中X位为读写控制位,读模式X为1,写模式X为0。图5.4IO扩展芯片从地址图5.5IO扩展芯片电路原理图5.2点亮LED灯10
若想读数据,则在R/W位设置为1,如图5.6所示为读模式。图5.6IO扩展芯片读写协议(读模式)5.2点亮LED灯11
若想要写数据,例如点亮LED灯,则在R/W位设置为0,如图5.7所示为写模式。图5.7IO扩展芯片读写协议(写模式)5.2点亮LED灯12
首先创建任务,在主循环中点亮或熄灭LED灯。
/***@description:初始化并创建任务*@param{*}*@return{*}*/staticvoidbase_04_i2c_pcf8574_led_demo(void){console_log_info("[demo]Enterbase_04_i2c_pcf8574_led_demo()!");PCF8574_Init();osThreadAttr_ttaskOptions;taskO="Task1";//任务的名字taskOptions.attr_bits=0;//属性位taskOptions.cb_mem=NULL;//堆空间地址taskOptions.cb_size=0;//堆空间大小taskOptions.stack_mem=NULL;//栈空间地址taskOptions.stack_size=1024;//栈空间大小
单位:字节taskOptions.priority=osPriorityNormal;//任务的优先级:Task1_ID=osThreadNew((osThreadFunc_t)Task1,NULL,&taskOptions);//创建任务1If(Task1_ID!=NULL){console_log_info("ID=%d,CreateTask1_IDisOK!",Task1_ID);}}SYS_RUN(base_04_i2c_pcf8574_led_demo);5.2点亮LED灯13
由于LED灯连接的是IO扩展芯片的P2引脚,所以若点亮LED灯,则让P2引脚为低电平,若熄灭LED灯,则让P2引脚为高电平。
voidTask1(void*argument){(void)argument;console_log_info("enterTask1.......");While(1){pcf8574_io.bit.p2=1;//LED灯熄灭PCF8574_Write(pcf8574_io.all);sleep(1);pcf8574_io.bit.p2=0;//LED灯点亮PCF8574_Write(pcf8574_io.all);sleep(1);}}145.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.3RGB三色灯15RGB彩色灯位于开发板的左上方,如图所示为RGB彩色灯位置。如图5.8所示为三色LED灯原理图,一段连接3.3V高电平,另一端连接AW2013控制芯片,控制芯片通过I2C连接Hi3861。AW2013控制芯片不仅可以控制RGB彩色灯的亮灭,还可以实现呼吸灯的效果或者控制亮暗程度。支持256级PWM的亮度调节。有了AW2013的辅助,可以不使用Hi3861的PWM,从而节省Hi3861的引脚。图5.8
开发板RGB彩色灯位置图5.9三色LED灯原理图5.3RGB三色灯16如表5.1所示为芯片不同寄存器功能与含义。地址寄存器名称功能默认值00h软件复位寄存器RSTR软复位控制33h01h全局控制寄存器GCR设置芯片使能和中断使能00h02h中断状态寄存器ISR读取中断状态00h30hLED控制寄存器LCTR分通道控制LED输出使能00h31h~33hLED模式配置寄存器LCFG设置LED0~LED2工作模式00h34h~36hPWM配置寄存器PWMx设置LED0~2的PWM亮度等级00h37/3A/3DhT1&T2时间寄存器设置一次编程模式的T1/T2时间00h38/3B/3EhT3&T4时间寄存器设置一次编程模式的T3/T4时间00h39/3C/3FhT0和重复次数配置寄存器设置T0时间和呼吸次数00h77hI2C地址配置寄存器IADR修改I2C接口的设备地址45h表5.1
AW2013寄存器功能与含义5.3RGB三色灯17首先初始化一些外设驱动:然后进行三色LED灯的初始化:在三色LED灯的初始化中,首先将GPIO9、GPIO10复用为I2C的SCL和SDA。PCF8574_Init();AW2013_Init();//三色LED灯的初始化//gpio_9复用为I2C_SCLhi_io_set_pull(HI_IO_NAME_GPIO_9,HI_IO_PULL_UP);hi_io_set_func(HI_IO_NAME_GPIO_9,HI_IO_FUNC_GPIO_9_I2C0_SCL);//gpio_10复用为I2C_SDAhi_io_set_pull(HI_IO_NAME_GPIO_10,HI_IO_PULL_UP);hi_io_set_func(HI_IO_NAME_GPIO_10,HI_IO_FUNC_GPIO_10_I2C0_SDA);5.3RGB三色灯18通过hi_i2c_init函数设立I2C的从机地址,总线号,速度。从机地址为0×8A,总线号为I2C0,速度100KHz。result=hi_i2c_init(AW2013_I2C_IDX,AW2013_I2C_SPEED);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013Initstatusis0x%x!!!\r\n”,result);returnresult;}利用I²C复位芯片,向RSTR_REG_ADDR寄存器写入0x55。//复位芯片result=aw2013_witeByte(RSTR_REG_ADDR,0x55);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013RSTR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}usleep(TIME_RESET);5.3RGB三色灯19设置使能全局控制器,向GCR_REG_ADDR寄存器写入0x01。设置打开RGB三路通道,向LCTR_REG_ADDR寄存器写入0x07。result=aw2013_witeByte(GCR_REG_ADDR,0x01);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013GCR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}result=aw2013_witeByte(LCTR_REG_ADDR,0x07);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013GCR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}5.3RGB三色灯20
设置RGB三路通道的工作模式LCFG0_REG_ADDR、LCFG1_REG_ADDR、LCFG2_REG_ADDR分别对应RGB灯的三个颜色。result=aw2013_witeByte(LCFG0_REG_ADDR,0x63);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013GCR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}result=aw2013_witeByte(LCFG1_REG_ADDR,0x63);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013GCR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}result=aw2013_witeByte(LCFG2_REG_ADDR,0x63);if(result!=HI_ERR_SUCCESS){printf(“I2Caw2013GCR_REG_ADDRstatus=0x%x!!!\r\n”,result);returnresult;}printf(“I2Caw2013Initissucceeded!!!\r\n”);returnHI_ERR_SUCCESS;}5.3RGB三色灯21
在前置代码中,关闭三色灯。
在任务1中首先打开三色灯,而后关闭。点亮LED灯则RGB_ON为255,关闭LED灯则RGB_OFF为0。voidTask1(void){while(1){AW2013_Control_Red(RGB_ON);AW2013_Control_Green(RGB_ON);AW2013_Control_Blue(RGB_ON);Sleep(TASK_DELAY_TIME);
AW2013_Control_Red(RGB_OFF);AW2013_Control_Green(RGB_OFF);AW2013_Control_Blue(RGB_OFF);Sleep(TASK_DELAY_TIME);}}AW2013_Control_Red(RGB_OFF);AW2013_Control_Green(RGB_OFF);AW2013_Control_Blue(RGB_OFF);5.3RGB三色灯22
如图5.10为RGB三色灯点亮效果图。图5.10RGB三色灯点亮效果图5.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.4.1概述24
脉冲宽度调制(PWM),是英文“PulseWidthModulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM模块用于生成PWM信号,调节灯的亮度等功能。PWM的频率是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期),也就是说一秒钟PWM有多少个周期,单位:Hz。PWM的周期T=1/f,T为周期,f为频率。比如50Hz=20ms一个周期,即如果频率为50Hz,也就是说一个周期是20ms那么一秒钟就有50次PWM周期。
占空比是一个脉冲周期内,高电平的时间与整个周期时间的比例。周期是一个脉冲信号的时间。脉宽时间为高电平时间。如图5.11所示,脉宽时间占总周期时间的比例,为占空比。图5.11
周期示意图5.4.2功能描述25PWM模式具有以下功能特点:共集成6路PWM。每一路的PWM时钟可以单独门控。可对晶体时钟(40/24M)或160M时钟进行1~65535倍分频。(4)PWM信号占空比可调整范围:1~1/65535。5.4.3工作方式26PWM模块有2个时钟可以选择:晶体时钟(40/24M)、160M。
以配置PWM信号对160M时钟分频、分频倍数为25倍、占空比为1/5为例,配置步骤如下:写CLK_SEL[pwm_clk_sel]为0,选择PWM时钟为160M。写PWM_EN[pwm_en]为1,使能PWM信号输出。写PWM_FREQ[pwm_freq]为0x19,确定对PWM时钟的分频倍数为25。写PWM_DUTY[pwm_duty]为0x5,确定PWM信号的占空比为PWM_DUTY[pwm_duty]/PWM_FREQ[pwm_freq]=1/5。写PWM_START[pwm_start]为1,使能步骤2、3、4的配置。共集成6路PWM。5.4.4寄存器概览27
如表5.2所示为PWM寄存器概览,其中PWM0基址是0x4004_0000、PWM1基址是0x4004_0100、PWM2基址是0x4004_0200、PWM3基址是0x4004_0300、PWM4基址是0x4004_0400、PWM5基址是0x4004_0500。
偏移地址名称描述0×00PWM_ENPWM使能寄存器0×04PWM_STARTPWM配置生效寄存器0×08PWM_FREQPWM频率控制计数值寄存器0×0CPWM_DUTYPWM占空比计数值寄存器表5.2
PWM寄存器概览5.4.5寄存器描述281.PWM_ENPWM_EN为PWM使能寄存器,偏移地址为0×00,总复位值为0×0000_0001。BitsAccess名称描述复位[31:1]-reserved保留。0×00000000[0]RWpwm_enPWM功能使能。0:禁止,pwm_out输出持续为0;1:使能。0×1表5.3PWM_EN描述5.4.5寄存器描述292.PWM_STARTPWM_START为PWM配置生效寄存器,偏移地址为0×04,总复位值为0×0000_0000。表5.4PWM_START描述BitsAccess名称描述复位[31:1]-reserved保留。0×00000000[0]RWpwm_startPWM配置生效寄存器。0:无操作;1:此前赋值的PWM相关寄存器生效,逻辑自清零。0×05.4.5寄存器描述303.PWM_FREQPWM_FREQ为PWM频率控制计数值寄存器,偏移地址为0×08,总复位值为0×0000_05DC。表5.5PWM_FREQ描述BitsAccess名称描述复位[31:16]-reserved保留。0×0000[15:0]RWpwm_freqPWM频率控制计数值,即对PWM时钟的分频倍数,取值范围1~65535。0×05DC5.4.5寄存器描述314.PWM_DUTYPWM_DUTY为PWM占空比计数值寄存器,偏移地址为0×0C,总复位值为0×0000_02EE。表5.6PWM_DUTY描述BitsAccess名称描述复位[31:16]-reserved保留。0×0000[15:0]RWpwm_dutyPWM占空比控制计数值,取值范围1~65535。Pwm_duty与pwm_freq的比值为占空比。0×02EE325.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.5.1概述33ADC是Analog-to-DigitalConverter的缩写,是指模/数转换器或者模拟/数字转换器。是将连续变量的模拟信号转换为离散的数字信号的器件,便于数字系统(如中央处理器CPU、微控制器MCU等)对传输信息进行快速处理和分析。ADC在模拟信号转化为数字信号需要经过采样、保持、量化和编码。采样和保持在采样保持电路中完成,而量化和编码步骤则在ADC中完成。LSADC模块为一款SAR(SuccessiveApproximationsRegister)ADC(逐次逼近型数模转换设备),实现将模拟信号转变成数字信号的功能。5.5.1概述34参数最小值典型值最大值单位描述PowersupplyAVDD1.711.81.89V模拟电源电压DVDD0.991.11.21V数字电源电压LSADC规范FullScaleIntput2.5-3.6VADC输入范围DNL-±1.5-LSB差分非线性INL-±1.5-LSB积分非线性Resolution-10-bit精度PowerDissipation-0.8-mA工作时功耗-1-μA关机时功耗Clock规范CLK--3MHz输入时钟频率DC455055%占空比Fs--157Ksps采样率TCONV-15-CLKcycle数据转换时间表5.7ADC规格5.5.2功能描述35LSADC模块具有以下功能特点:输入时钟3MHz,12bit采样精度,单通道采样频率<200KHz。共8个通道,支持软件配置0~7任意通道使能,逻辑按通道编号先低后高发起切换,每个通道采样1个数,通道切换时会使ADC电路进行1次复位处理。支持从解复位到开始ADC数据转换时间寄存器可配。支持128×15bitFIFO用于数据缓存,数据存储格式:高3bit为通道编号,低12bit为有效数据。支持对ADC采样数据进行平均滤波处理,平均次数支持1(不进行平均)、2、4、8;多通道时,每个通道接收N个数据(平均滤波个数)再切换通道。支持FIFO水线中断、满中断上报。5.5.3工作方式36软件配置ADC的步骤如下:CPU配置扫描通道号LSADC_CTRL0[ch_vld],使能1个或多个通道;配置平均滤波模式LSADC_CTRL0[equ_model_sel]。写LSADC_CTRL1[rxintsize]、LSADC_CTRL2[rxim]、LSADC_CTRL2[rorim],配置FIFO的中断和水线。写LSADC_CTRL11[power_down]为0,ADC上电。写LSADC_CTRL7[start]为1,开始ADC采样。待中断上报,读LSADC_CTRL9[dr],获取ADC数据。写LSADC_CTRL8[stop]为1,写LSADC_CTRL11[power_down]为1,停止采样。读LSADC_CTRL9[dr],获取ADC数据,直至FIFO空(LSADC_CTRL10[rne]为0。5.5.4寄存器概览37如表5.8所示为ADC寄存器概览。偏移地址名称描述0×000LSADC_CTRL0ADC控制寄存器0×004LSADC_CTRL1ADCFIFO设置寄存器0×008LSADC_CTRL2ADC中断控制寄存器0×00CLSADC_CTRL3ADC中断清除寄存器0×010LSADC_CTRL4ADCFIFO状态寄存器0×014LSADC_CTRL5ADC原始中断状态寄存器0×018LSADC_CTRL6ADC屏蔽后中断状态寄存器0×01CLSADC_CTRL7ADC起始扫描控制寄存器0×020LSADC_CTRL8ADC停止扫描控制寄存器0×024LSADC_CTRL9ADCFIFO读数据控制寄存器0×028LSADC_CTRL10ADC保留控制寄存器0×02CLSADC_CTRL11ADC下电控制寄存器表5.8ADC寄存器概览5.5.5寄存器描述381.LSADC_CTRL0LSADC_CTRL0为ADC控制寄存器,偏移地址为0×000,总复位值为0×0000_F000。BitsAccess名称描述复位[31:16]RWreserved保留。0×00[25:24]RWCur_bais模拟电源控制。10:手动控制(AVDD=1.8V);11:手动控制(AVDD=3.3V);其他:自动识别模式。0×0[23:12]RWrst_cnt从RST到开始转换的时间计数。该值应≥15。0×00F[11:10]RWreserved保留。0×0[9:8]RWequ_model_sel平均算法模式选择。00:1次平均(即不进行平均);01:2次平均算法模式;10:4次平均算法模式;11:8次平均算法模式。0×0[7:0]RWch_vld每个通道是否有效。bit[0]~bit[7]分别对应通道A~通道H。每bit对应的取值含义如下:0:无效;1:有效。0×00表5.9LSADC_CTRL0描述5.5.5寄存器描述392.LSADC_CTRL1LSADC_CTRL1为ADCFIFO设置寄存器,偏移地址为0×004,总复位值为0×0000_0002。表5.10LSADC_CTRL1描述BitsAccess名称描述复位[31:3]RWreserved保留。0×00000000[2:0]RWrxintsizeFIFO水线设置。当接收FIFO中数据个数≥配置的字数时,RXRIS有效。000:127;001:124;010:64;011:32;100:16;0×25.5.5寄存器描述403.LSADC_CTRL2LSADC_CTRL2为ADC中断控制寄存器,偏移地址为0×008,总复位值为0×0000_0000。表5.11LSADC_CTRL2描述BitsAccess名称描述复位[31:2]RWreserved保留。0×00000000[1]RWrxintsize水线中断屏蔽位。0:屏蔽;1:不屏蔽。0×0[0]RWrorimFIFO溢出中断屏蔽位。0:屏蔽;1:不屏蔽。0×05.5.5寄存器描述414.LSADC_CTRL3LSADC_CTRL3为ADC中断清除寄存器,偏移地址为0×00C,总复位值为0×0000_0000。表5.12LSADC_CTRL3描述BitsAccess名称描述复位[31:1]RWreserved保留。0×00000000[0]W1_PULSEroricFIFO溢出中断清除位。写0:不清除;写1:清除。0×05.5.5寄存器描述425.LSADC_CTRL4LSADC_CTRL4为ADCFIFO状态寄存器,偏移地址为0×010,总复位值为0×0000_0000。表5.13LSADC_CTRL4描述BitsAccess名称描述复位[31:3]-reserved保留。0×00000000[2]RObsyADC忙标记。0:空闲;1:忙。0×0[1]ROrffFIFO是否已满。0:未满;1:已满。0×0[0]ROrneFIFO是否未空。0:已空;1:未空。0×05.5.5寄存器描述436.LSADC_CTRL5LSADC_CTRL5为ADC原始中断状态寄存器,偏移地址为0×014,总复位值为0×0000_0000。表5.14LSADC_CTRL5描述BitsAccess名称描述复位[31:2]-reserved保留。0×00000000[1]ROrxris接收FIFO水线中断的原始中断状态。0:无中断;1:有中断。0×0[0]ROrff接收溢出中断的原始中断状态。0:无中断;1:有中断。0×05.5.5寄存器描述447.LSADC_CTRL6LSADC_CTRL6为ADC屏蔽后中断状态寄存器,偏移地址为0×018,总复位值为0×0000_0000。表5.15LSADC_CTRL6描述BitsAccess名称描述复位[31:2]-reserved保留。0×00000000[1]ROrxris接收FIFO水线中断屏蔽后的状态。0:无中断;1:有中断。0×0[0]ROrormis接收溢出中断屏蔽后的状态。0:无中断;1:有中断。0×05.5.5寄存器描述459.LSADC_CTRL8LSADC_CTRL8为ADC停止扫描控制寄存器,偏移地址为0×020,总复位值为0×0000_0000。表5.17LSADC_CTRL8描述BitsAccess名称描述复位[31:1]-reserved保留。0×00000000[0]W1_PULSELsadc_stop停止自动扫描。写0:无效;写1:停止LSADC的扫描功能(需再写LSADC_CTRL7[lsadc_start]才可以重新启动扫描)。0×05.5.5寄存器描述469.LSADC_CTRL8LSADC_CTRL8为ADC停止扫描控制寄存器,偏移地址为0×020,总复位值为0×0000_0000。表5.17LSADC_CTRL8描述BitsAccess名称描述复位[31:1]-reserved保留。0×00000000[0]W1_PULSELsadc_stop停止自动扫描。写0:无效;写1:停止LSADC的扫描功能(需再写LSADC_CTRL7[lsadc_start]才可以重新启动扫描)。0×05.5.5寄存器描述4710.LSADC_CTRL9LSADC_CTRL9为ADCFIFO读数据控制寄存器,偏移地址为0×024,总复位值为0×0000_0000。表5.18LSADC_CTRL9描述BitsAccess名称描述复位[31:15]-reserved保留。0×00000000[14:0]ROdr读取ADC数据。bit[14:12]:当前数据对应的通道编号(通道编号0×0~0×7分别代表通道A~通道H);bit[11:0]:有效数据(其中:bit[1:0]为小数位)。0×00005.5.5寄存器描述4811.LSADC_CTRL10LSADC_CTRL10为ADC保留控制寄存器,偏移地址为0×028,总复位值为0×0000_0000。表5.18LSADC_CTRL9描述BitsAccess名称描述复位[31:28]RWreserved保留。0×0[27:24]RWlsadc_reg_3to0通用寄存器4。0×0[23:22]RWreserved保留。0×0[21:16]RWlsadc_reg2_5to0通用寄存器3。0×00[15:14]RWreserved保留。0×0[13:12]RWlsadc_reg1_7to6通用寄存器2。0×0[11:9]RWreserved保留。0×0[8]RWlsadc_reg1_3通用寄存器1。0×0[7]RWreserved保留。0×0[6:0]RWlsadc_reg0_6to0通用寄存器0。0×005.5.5寄存器描述4912.LSADC_CTRL11LSADC_CTRL11为ADC下电控制寄存器,偏移地址为0×02C,总复位值为0×0000_0001。表5.20LSADC_CTRL11描述BitsAccess名称描述复位[31:1]RWreserved保留。0×00000000[0]RWpower_downADC下电控制。0:正常工作。1:下电。0×1505.1GPIO简介5.2点亮LED灯5.3RGB三色灯5.4脉冲宽度调制5.5模/数转化器5.6串行外围设备接口CONTENTS5.6.1SPI概述51SPI是一种高速的全双工同步通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI通讯方式分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个
或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。SPI是全双工且SPI没有定义速度限制,一般的实现通常能达到甚至超过10Mbps。SPI接口一般使用四条信号线通信:SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。(2)MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。(3)SCLK:串行时钟信号,由主设备产生。(4)CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。芯片的SPI工作参考时钟为160MHz。SPI功能框图如图5.12所示。5.6.1SPI概述52图5.12SPI功能框图5.6.2功能描述53SPI具有以下功能特点:(1)支持接口时钟频率可编程。a)作为主设备:最大支持接口时钟频率的4分频。b)作为从设备:最大支持接口时钟频率的8分频。(2)SPI0与SPI1的FIFO规格不同。a)SPI0:支持收/发分开的字宽为256×16bit的FIFO(发送FIFO和接收FIFO各1个)。b)SPI1:支持收/发分开的字宽为64×16bit的FIFO(发送FIFO和接收FIFO各1个)。(3)支持SPI帧格式,分为以下三种:a)Motorola帧格式;b)TI(TexasInstruments)帧格式;c)NationalMicrowire帧格式。(4)串行数据帧长度可编程:4bit~16bit。支持发送FIFO中断、接收FIFO中断、接收超时中断和接收FIFO溢出中断独立屏蔽。(5)内部提供环回测试模式。(6)支持DMA操作,但不支持作为DMA的流控设备。5.6.3工作方式541.接口信号Master模式SPI接口信号描述如表5.21所示。信号名宽度(bit)方向功能描述SPI_CLK1OSPI串行时钟信号,由Master产生并控制。SPI_CS_N1OSPI片选信号,低电平有效。SPI_DI1I输入数据。SPI_DO1O输出数据。Slave模式SPI信号描述如表5.22所示。信号名宽度(bit)方向功能描述SPI_CLK1ISPI串行时钟信号,由Master产生并控制。SPI_CS_N1ISPI片选信号,低电平有效。SPI_DI1I输入数据。SPI_DO1O输出数据。5.6.3工作方式552.传输帧格式SPI可以与支持SPI帧格式的任意串行Master或Slave器件进行通信。图5.13SPI单帧帧格式(SPO=0、SPH=0)图5.14SPI连续帧帧格式(SPO=0、SPH=0)在该模式下,当SPI处于空闲状态时:SPI_CLK信号设置为低电平。SPI_CS_N信号设置为高电平。发送数据线
SPI_DO强制为低电平(1)【SPO=0、SPH=0】,SPI单帧帧格式如图5.13所示。SPI连续帧格式如图5.14所示5.6.3工作方式56
当SPI为使能状态,且发送FIFO内有有效数据时,设置SPI_CS_N信号为低电平表示开始传输数据。此时Slave的数据立刻发送到Master的接收数据线SPI_DI。半个SPI_CLK周期之后,Master的有效数据传送到SPI_DO。再过半个SPI_CLK时钟周期之后,SPI_CLKMaster管脚设置为低电平,这表示数据在SPI_CLK时钟的下降沿被捕获,在SPI_CLK时钟的上升沿被传送。
如果传输单个word(4~16bit),当捕捉到最后1bit数据时,SPI_CS_N在接下来的1个SPI_CLK时钟之后恢复为高电平。
如果是连续的传输,SPI_CS_N信号在每个word(4~16bit)传输之间必须拉高。这是因为当SPH为0时,Salve选择管脚固定其内部串行设备寄存器的数据,使它不会变化。SPI_CS_N在捕获到最后1bit数据之后的1个SPI_CLK时钟周期之后恢复为高电平。5.6.3工作方式57(2)【SPO=1、SPH=1】,SPI单帧帧格式如图5.15所示,SPI连续帧帧格式如图5.16所示。图5.15SPI单帧帧格式(SPO=0、SPH=1)图5.16SPI连续帧帧格式(SPO=0、SPH=1)在该模式下,当SPI处于空闲状态时:SPI_CLK信号设置为低电平。SPI_CS_N信号设置为高电平。发送数据线
SPI_DO强制为低电平5.6.3工作方式58
当SPI为使能状态,且发送FIFO内有有效数据时,设置SPI_CS_N信号为低电平表示开始传输数据。此时Slave的数据立刻发送到Master的接收数据线SPI_DI。半个SPI_CLK时钟周期之后,Master的有效数据在自身的传输线上有效,同时SPI_CLK产生第一个上升沿。数据在SPI_CLK时钟的下降沿被捕获,在时钟的上升沿被传送。
如果传输单个word(4~16bit),当捕捉到最后1bit数据时,SPI_CS_N在接下来的1个SPI_CLK时钟之后恢复为高电平。
当连续传输时,在传输数据word(4~16bit)之间SPI_CS_N保持为低电平。连续传输结束时,SP_CS_N在最后1bit捕获之后的1个SPI_CLK时钟之后恢复为高电平。5.6.3工作方式59(3)【SPO=1、SPH=0】,SPI单帧帧格式如图5.17所示,SPI连续帧帧格式如图5.18所示。图5.17SPI单帧帧格式(SPO=1、SPH=0)图5.18SPI连续帧帧格式(SPO=1、SPH=0)在该模式下,当SPI处于空闲状态时:SPI_CLK信号设置为高电平。SPI_CS_N信号设置为高电平。发送数据线
SPI_DO强制为低电平5.6.3工作方式60
当SPI为使能状态,且发送FIFO内有有效数据时,设置SPI_CS_N信号为低电平表示开始传输数据。此时Slave的数据立刻发送到Master的接收数据线SPI_DI。半个SPI_CLK周期之后,Master的有效数据传送到SPI_DO。再过半个SPI_CLK时钟周期之后,SPI_CLKMaster管脚设置为低电平,这表示数据在SPI_CLK时钟的下降沿被捕获,在SPI_CLK时钟的上升沿被传送。
如果传输单个word(4~16bit),当捕捉到最后1bit数据时,SPI_CS_N在接下来的1个SPI_CLK时钟之后恢复为高电平。
如果是连续的传输,SPI_CS_N信号在每个word(4~16bit)传输之间必须拉高。这是因为当SPH为0时,Salve选择管脚固定其内部串行设备寄存器的数据,使它不会变化。SPI_CS_N在捕获到最后1bit数据之后的1个SPI_CLK时钟周期之后恢复为高电平。5.6.3工作方式61(4)【SPO=1、SPH=1】,SPI单帧帧格式如图5.19所示,SPI连续帧帧格式如图5.20所示。图5.19SPI单帧帧格式(SPO=1、SPH=1)图5.20SPI连续帧帧格式(SPO=1、SPH=1)在该模式下,当SPI处于空闲状态时:SPI_CLK信号设置为高电平。SPI_CS_N信号设置为高电平。发送数据线
SPI_DO强制为低电平5.6.3工作方式62
当SPI为使能状态,且发送FIFO内有有效数据时,设置SPI_CS_NMaster信号为低电平表示开始传输数据。此时Slave的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全用药课件
- 2026年历史知识选择题目及答案
- 旅顺庭院改造施工方案(3篇)
- 景区营销方案豆丁(3篇)
- 杨家山小区施工方案(3篇)
- 档案安全应急管理预案(3篇)
- 正规旧房翻新施工方案(3篇)
- 2026-2027学年初中数学七年级上册(新教材)鲁教版(五四制)(新教材)3 用计算器开方课时过关卷
- 初中九年级语文《故乡》(人物分析)教案
- 爱情与婚姻模板
- 2026年自动控制原理期末考试题及答案
- 草原牧区人畜共患病中西医结合科普课件
- 新教科版科学四年级上册3-1《声音是怎样产生的》课件
- 2026年叉车司机N1证理论知识考试题库完整答案
- 双创知识培训课件
- 作品鉴赏+澧水船夫号子+课件-2025-2026学年高中音乐人音版必修+音乐鉴赏
- 医院肿瘤TNM分期课件
- 创伤失血性休克应急预案演练脚本(2篇)
- (高清版)DB54∕T 0484-2025 《健康体检机构 服务规范》
- 水运工程质量培训课件
- 部编版五年级语文上册第一单元习作-我的心爱之物
评论
0/150
提交评论