数码管模块测试说明 基于stm32spi实验

上传人:新** 文档编号:487696572 上传时间:2024-01-11 格式:DOC 页数:12 大小:417KB
返回 下载 相关 举报
数码管模块测试说明 基于stm32spi实验_第1页
第1页 / 共12页
数码管模块测试说明 基于stm32spi实验_第2页
第2页 / 共12页
数码管模块测试说明 基于stm32spi实验_第3页
第3页 / 共12页
数码管模块测试说明 基于stm32spi实验_第4页
第4页 / 共12页
数码管模块测试说明 基于stm32spi实验_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数码管模块测试说明 基于stm32spi实验》由会员分享,可在线阅读,更多相关《数码管模块测试说明 基于stm32spi实验(12页珍藏版)》请在金锄头文库上搜索。

1、SEG模块测试1、功能描述使用数码管来显示当前MP3播放的歌曲序号2、IO口复用功能2.1 IO口复用功能描述1 使用默认复用功能前必须对端口位配置寄存器编程l 对于复用的输入功能,端口可以配置成: 输入模式(浮空,上拉或下拉); 复用功能输出模式:输入驱动器被配置成浮空输入模式;l 对于复用的输出功能,端口必须配置成复用功能输出模式(推挽或开漏);l 对于双向复用功能,端口必须配置复用功能输出模式(推挽或开漏),这时,输入驱动器被配置成浮空输入模式;如果把一端口配置成复用输出功能,将使引脚和输出寄存器断开,并和片上外设的输出信号连接如果软件把一个GPIO脚配置成复用功能,但是外设没有被激活,

2、它的输出将不确定。2,I/O端口的基本结构3 端口位配置表4输出模式位2.2 使用IO口复用功能配置步骤/=SPI1复用功能初始化=GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;/选择PA.4,PA.5, PA.6,PA.7GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管脚频率为50MHZGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/模式为复用推挽输出 (SPI1) GPIO_Init(GPI

3、OA, &GPIO_InitStructure); /初始化GPIOA寄存器3、SPI接口使用3.1 SPI功能描述串行外设接口(SPI)允许芯片与外部设备以半/全双工,同步,串行方式通信。此接口可以被配置成主模式,在这种模式下,它要为外部从设备提供通信时钟(SCK).接口还能以多主配置方式工作。它可用于多种用途,包括可选第三根双向数据的双线单工同步传输,或使用CRC校验的可靠通信。SPI方框图:SPI通过4个引脚和外部设备相连:l MISO: 主入/从出数据口,此引脚可以被用来在从模式中发送数据,在主模式中接受数据。l MOSI: 主出/从入数据口,此引脚可以用来在主模式是发送数据,在从模式

4、时接受数据。l SCK: SPI主设备输出串行时钟,SPI从设备输入串行时钟l NSS: 从选择。这是一个用来选择主/从模式的可选引脚。SPI主设备和从设备分别通信时,该引脚起到依次片选各个从设备的作用,以避免发生数据线冲突。从设备 的NSS输入可以由主设备上的标准I/O端口驱动。SPI工作在主设备配置时,如果SSOE位使能,则NSS引脚用作输出,并输出低电平;此时,所有NSS引脚连到该设备NSS引脚的其他设备都将收到低电平,当这些设备配置为NSS硬件模式时,就被自动地配置成从设备.3.2 时钟信号的相位和极性使用SPI_CR寄存器的CPOL和CPHA位,组合成四种可能的时序关系,CPOL(时

5、钟极性)位控制在没有数据传输时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。如果控制CPOL被复位,SCK引脚在空闲状态保持低电平;如果CPOL被置位,SCK引脚在空闲状态保持高电平。如果CPHA(时钟相位)位被置位,SCK时钟的第二个边沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行数据位的采样。数据在第一个时钟边沿被锁存,如果CPHA位被复位,SCK时钟的第一个边沿(CPOL位为0时就是下降沿,CPOL位为1时就是上升沿)进行数据采样,数据在第二个时钟边沿被锁存。CPOL时钟的极性和CPHA时钟相位的组合选择数据捕促的时钟边沿。Note:1. 在改变CPOL/CP

6、HA位之前,必须清除SPE位将SPI禁止。2. 主和从必须配置成相同的时序模式。3. SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为1时,空闲时应上拉SCK为高电平;CPOL为0时,空闲时应下拉SCK为低电平)。4. 数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接受的数据长度数据时钟时序图:3.3 SPI应用单主和单从应用:MOSI脚相互连接,MISO脚相互连接,用这种方式,数据在主和从之间串行的传输(MSB位在前)。通信总是由主设备发起,从设备通过MOSI脚把数据发送给从设备,从设备通过MISO引脚回传数据。这意味全双工通信的数据输出和

7、数据输入是同一个时钟信号同步的;时钟信号由主设备通过SCK脚提供。3.4 SPI库函数函数名描述SPI_DeInit将外设SPIx寄存器重设为缺省值SPI_Init根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器SPI_Cmd使能或者失能SPI外设SPI_I2S_SendData发送数据3.4 使用SPI基本步骤SPI主模式:配置步骤:1. 通过SPI_CRQ寄存器的BR2:0位定义串行时钟波特率。2. 选择CPOL和CPHA位,定义数据传输和串行时钟的相位关系。3. 设置DFF位来定义8或16位数据帧格式。4. 配置SPI_CR1寄存器的LSBFIRST位定义帧格式5.

8、如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式中,需设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作在输出模式,则只需设置SSOE位。6. 必须设置MSTR和SPE位(只当NSS脚被连到高电平,这些位才能保持置位)。在这个配置 中,MOSI脚是数据输出,而MISO脚是数据输入。数据发送过程:当一个字节写进发送缓冲器时,发送过程开始。在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到MOSI脚上;MSB在先还是LSB在先,取决于SPI_CR1寄存器中的LSBFIRSRT位,数据从发送缓冲器传输到

9、移位寄存器时TXE标志将被置位,如果设置SPI_CR1寄存器中的TXEIE位,将产生中断4、硬件电路Note:使用 SPI与74HC595进行通信5、74HC595功能描述74HC595,是为Motorola的SPI总线开发的一款串并转换芯片,由于74HC595的输入输出电平兼容LSTTL,NMOS,COMOS电平,且具有较强的输出负载能力,而被广泛地运用于MCU(微控制器),MPU(微处理器)的I/O扩张。74HC595在5V供电的时候能够达到30MHz的时钟速度,每个并行输出端口均能承受20mAd灌电流和拉电流,这个特点保证了不用增加额外的扩流电路即可轻松驱动LED。引脚及其功能:管脚号管

10、脚名称管脚功能描述1QB锁存器输出,三态2QC锁存器输出,三态2QD锁存器输出,三态4QE锁存器输出,三态5QF锁存器输出,三态6QG锁存器输出,三态7QH锁存器输出,三态8GND电源地9SOUT串行输出,用于级联,无三态输出功能10SCLR低电平有效,当此管脚上出现低电平时,将复位内部的移位寄存器,但不影响8位锁存器的值11SCK移位寄存器时钟输入 ,上升沿把14脚的数据移入内部寄存器12RCK锁存时钟输入,上升沿将把内部移位寄存器的值锁存起来13nCS低电平有效,将锁存器的输出映射到输出并行口(QA-QH)上14SI串行数据的输入,数据从这个管脚移进内部的8位串行移位寄存器15QA锁存器输

11、出,三态16VCC电源正,2-6V6软件代码/* 版权:源享教育()* 文件:Seg_Module.c* 版本:1.0* 说明:MP3播放器当前播放歌曲序号,播放第1首时4位数码管显示0001,依次排列* 作者:刘斌* 时间:2011.6.21* 说明:数码管段显由HC595控制,位显由IO口SEG_A1/SEG_A2/SEG_A3/SEG_A4控制。*HC595使用SPI通信方式,Cortex M3的SPI使用步骤如下:*1、使能APB2外设SPI1时钟:RCC_APB2PeriphClockCmd();*2、将外设SPI寄存器重设为缺省值:SPI_I2S_DeInit();*3、初始化外设

12、SPI寄存器:SPI_Init();*4、使能APB2外设SPI:SPI_Cmd();*5、调用SPI数据发送函数:SPI_I2S_SendData();-修改记录-* 修改功能:* 修改时间:* 修改作者:* 遗留问题:*/#include stm32f10x_lib.h /包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。#defineHC595_nCS GPIO_Pin_0/HC595_nCS = PA0#defineHC595_RCK GPIO_Pin_1/HC595_RCK = PA1#defineSEG_A1 GPIO_Pin_8/SEG_

13、A1 = PC8#defineSEG_A2 GPIO_Pin_15/SEG_A2 = PB15#defineSEG_A3 GPIO_Pin_9/SEG_A3 = PC9#defineSEG_A4 GPIO_Pin_8/SEG_A4 = PE8u8 const NumberTube_TAB10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/数码管09/* Function Name : SEG_Init* Description : SEG数码管引脚,SPI1引脚初始化* Input : None* Return : None*/voidSEG_Init(void)GPIO_InitTypeDef GPIO_InitStructure;/ 声明一个IO口结构体变量SPI_InitTypeDef SPI1_InitStructure;/声明一个SPI结构体变量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号