0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SH32F9001的SPI介绍与应用

中颖电子 来源:中颖电子 2024-12-31 17:04 次阅读

一、SH32F9001 SPI简介

SPI(Serial peripheral interface)即串行外围设备接口,是由Motorola首先在其MC68HCxx系列单片机上定义的,基于高速全双工总线的通讯协议。被广泛应用于LCD、闪存芯片等设备与MCU之间通讯。SH32F9001包含2个独立的串行外设接口SPI0/1,主从机可选,10个可编程主时钟频率,极性相位可编程,数字位宽8/16位可选,支持DMA通信,带MCU中断的主模式故障出错标志,写入冲突标志保护,可选择LSB或MSB传输。

二、 SPI的物理层与协议层简介

1、SPI物理层

SPI通讯需要使用4条线:3条总线(SCK、MOSI、MISO)和1条片选(nSS)。

68d15dae-c747-11ef-9310-92fbcf53809c.jpg

Master与Slave连接示意图(只需要连接4条线)

SCK(Serial Clock):时钟信号线,通讯数据同步用,由主机产生,决定了SPI的通讯速率。

MOSI(Master Output Slave Input):主机输出数据/从设备输入数据线,即这条数据线上传输主机发给从机的数据。

MISO(Master Input Slave Output):主机输入数据/从设备输出数据线,即这条数据线上传输从机发给主机的数据。

nSS(Slave Select):片选信号线,主要用于选中对应的SPI从设备,低电平有效。每个从设备独立拥有一条nSS信号线,占据主机的一个引脚。设备的其它三根总线是并联到SPI主机的,即无论多少个从设备,都共同使用这3条线。当从设备上的nSS引脚被拉低时说明该从设备被主机选中,可以与主机进行通讯。

68eac08c-c747-11ef-9310-92fbcf53809c.jpg

一个Master与多个Slave连接示意图

(2)SPI 协议层

68fcdfd8-c747-11ef-9310-92fbcf53809c.jpg

如上图为SH32F9001芯片SPI的一种通讯模式(CPOL=1,CPHA=0)时序图,nSS、SCK、MOSI信号均由Master产生,MISO信号由从机产生。在nSS为低电平的前提下,MOSI和MISO信号才有效,在每个时钟周期MOSI和MISO传输一位数据。

SPI通讯也需要通讯的起始/结束信号,有效数据和同步时钟。途中nSS信号由高电平变为低电平即为SPI的起始信号,nSS信号由低电平变为高电平即为SPI通讯的结束信号。当从机检测到nSS引脚被拉低时就知道自己被主机选中,准备和主机进行通讯。

SPI通讯的数据采集是个相对复杂的环节且有多种模式,现在只以上图(CPOL=1,CPHA=0)情形为例进行简单讲解。途中Capture Point行箭头指示的地方即为有效数据被采集的时间点。SCK、MOSI、MISO线上的数据在每个SCK时钟周期传输一位数据,数据的输入/输出是可以同时进行的。由上图可知,在SCK为奇数边沿,即SCK下降沿时,数据得到有效采样,也就是说,在这个时刻,MISO和MOSI的数据有效,高电平表示1,低电平表示数据0,在其它时刻数据并无效,可以理解为为下一次MISO和MOSI的数据传输做准备,在非采样时刻MOSI和MISO上的信号才能切换。

数据传输中,先传送高位还是低位,SPI并无明确规定,但是数据要在主从机中正确传输,首先要约定好先传高还是低,一般是高位在先的方式传输。

三、 SPI的时钟极性(CPOL)和时钟相位(CPHA)

时钟极性(CPOL)指通讯设备处于空闲状态时,SCK的状态,即空闲时SCK是高电平还是低电平。时钟相位(CPHA)指数据采样时刻位于SCK的偶数边沿采样还是奇数边沿采样。

CPOL=0时SCK在空闲时为低电平;CPOL=1时SCK在空闲时为高电平;CPHA=0时,在SCK的计数边沿采样;CPHA=1时,在SCK的偶数边沿采样。所以SPI的采样时刻并非由上升沿/下降沿决定的,而是由CPOL与CPHA所组合的工作模式决定。所以SPI有4种工作模式。

工作模式 CPOL CPHA 空闲时SCK时钟 采样时钟边沿
1 0 0 奇数边沿
2 0 1 偶数边沿
3 1 0 奇数边沿
4 1 1 偶数边沿

注意:在配置主机和从机的工作模式时,需要配置为相同的工作模式,只有模式相同才能进行正确通讯。

四、 SH32F9001与闪存W25Q128通讯示例

1、W25Q128简介

W25Q128芯片是串行闪存,可以通过四线SPI控制,管脚如下图所示。使用SPI控制时,DO管脚为MISO,DI管脚为MOSI,/CS为片选NSS,CLK为时钟信号线。

690fbb26-c747-11ef-9310-92fbcf53809c.jpg

W25Q128通过命令操作,这里简单介绍几条接下来示例中与32F9001通讯的指令,其它指令详情可以参考其数据手册。

(1)读制造商/设备ID指令:0x90

该指令通常在调试程序时候用到,判断SPI通信是否正常。SH32F9001做主机拉低/CS片选使能器件开始传输,首先通过DI脚即MOSI线传送”90H”指令,接着传输“000000H”的24位地址,之后W25Q128会通过DO脚即MISO脚传送制造商ID(EFH)和设备ID(17H)。

(2)写使能指令:0x06

SH32F9001向FLASH发送0x06写使能指令即可开启写使能,该指令先拉低/CS引脚电平,接着传输“06H”指令。

(3)读数据指令:0x03

读数据指令可以从存储器依次一个或多个读取数据字节,该指令通过主器件拉低/CS电平能设备开始传输,然后传输“03H”指令,接着通过DI管脚传输24位地址,W25Q128器件得到地址后,寻址存储器中的数据通过DO引脚即MISO传输给SH32F9001。

(4)页编程指令:0x02

页编程指令可以在擦除的存储单元中写入256个字节。该指令先拉低/CS引脚,接着传输“02H”指令和24位地址。后面接着传输至少一个字节数据,最多256字节。

2、SH32F9001与W25Q128硬件连接示意图:

691c6740-c747-11ef-9310-92fbcf53809c.jpg

SH32F9001与W25Q128进行SPI通信只需要对应连接4条线就可以,将SH32F9001的PC6配置为nSS脚,PC7配置为MISO,PC8配置为MOSI,PC9配置为SCK。

3、SH32F9001与W25Q128通讯程序。

void SPI_GPIO_Config(void)//GPIO初始化

{

RCC->RCCLOCK= 0x33CC; //打开时钟配置锁定寄存器

RCC->AHBENR.BIT.IOCLKEN= 1; //使能IO时钟

RCC->RCCLOCK= 0; //关闭时钟配置锁定寄存器

GPIOC_CFG->LCKR.BIT.LOCK=0X5AA5; //解锁GPIOA配置锁

GPIOC_CFG->LCKR.BIT.LCK=0;

GPIOC->MODER =0X0340; //设置PC6/C8/C9口为输出模式PC7输入模式

GPIOC_CFG->OTYPER=0X0; //设置PC6/C8/C9口输出方式为推挽输出

GPIOC_CFG->PUPDR.BIT.PHDR9=1; //PC9开上拉

GPIOC_CFG->AFRL.BIT.AFR6=0X03;//设置PC6口为SPI0-SCK脚模式

GPIOC_CFG->AFRL.BIT.AFR7=0X03;//设置PC7口为SPI0-MISO脚模式

GPIOC_CFG->AFRH.BIT.AFR8=0X03;//设置PC8口为SPI0-MOSI脚模式

GPIOC_CFG->AFRH.BIT.AFR9=0X01;//PC9口为nSS脚

GPIOC_CFG->LCKR.BIT.LOCK=0; //关闭GPIOC配置锁

GPIOC_CFG->LCKR.BIT.LCK=0XFFFF;

}

voidSPI0Init(void) //SPI0初始化

{

GPIOC->BSRR.V32=0x0200;// SPI0 flash不选中

RCC->RCCLOCK = 0x33CC; //打开时钟配置锁定寄存器

RCC->APB1ENR.BIT.SPI0EN =1; //使能SPI0时钟

RCC->RCCLOCK = 0; //关闭时钟配置锁定寄存器

SPI0->CR.BIT.SPR=0X04; //SPI0时钟为PCLK1/32分频

SPI0->CR.BIT.SSDIS=0; //打开NSS引脚

SPI0->CR.BIT.CPOL=1; //在空闲模式SCK处于高电平

SPI0->CR.BIT.CPHA=1; //SCK周期的第二沿采集数据

SPI0->CR.BIT.MSTR=1; //配置SPI0为主机模式

SPI0->CR.BIT.DIR =0;//MSB优先发送

SPI0->CR.BIT.SPDATL =0; //SPI0每次发送8Bit数据

SPI0->CR.BIT.SPIEN=1; //使能SPI

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44564

    浏览量

    635839
  • 接口
    +关注

    关注

    33

    文章

    8612

    浏览量

    151287
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1707

    浏览量

    91665
  • 物理层
    +关注

    关注

    1

    文章

    151

    浏览量

    34393
  • 通讯协议
    +关注

    关注

    10

    文章

    275

    浏览量

    20361

原文标题:SH32F9001的SPI介绍与应用

文章出处:【微信号:SINO_25181447,微信公众号:中颖电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SH32F9001规格书中文资料

    SH32F9001_32F9801是基于ARM Cortex-M3内核的高性能32位微控制器,支持72MHz最高主频,由于采用特殊结构的存储器指令加速模式,可使系统获得近乎零等待周期的高运行效率
    发表于 10-19 06:33

    SH32F9801规格书中文资料

    SH32F9001_32F9801是基于ARM Cortex-M3内核的高性能32位微控制器,支持72MHz最高主频,由于采用特殊结构的存储器指令加速模式,可使系统获得近乎零等待周期的高运行效率
    发表于 10-19 08:18

    SH32F9001系列应用指南

    本应用指南是 SH32F9001 系列微控制器产品应用的指导性手册,主要包含有关如何使用SH32F9001 系列产品的基本信息和特别注意事项,包含功能模块典型工作模式的配置和使用方法,会以示例代码
    发表于 10-25 06:29

    SH79F165/SH79F085规格书(中文资料pdf)

    SH79F085/SH79F165是一种高速高效率8051兼容单片机。在同样振荡频率下,较之传统的8051芯片它具有运行更快速, 性能更优越的特性。 SH79F085/SH79F165
    发表于 04-11 17:33 263次下载
    <b class='flag-5'>SH79F</b>165/<b class='flag-5'>SH79F</b>085规格书(中文资料pdf)

    SH79F164,pdf,datasheet

    本网站提供适用于学习SH79F164人群使用的SH79F164规格书参考,里面包含了SH79F164的结构图与说明等,欢迎大家参阅。
    发表于 04-13 13:13 57次下载

    SH88F6161和SH88F6162 DEOM程序解决方案资料合集免费下载

    本文档的主要内容详细介绍的是SH88F6161和SH88F6162 DEOM程序解决方案资料合集免费下载包括了:DEMO-88F54-SPISH8
    发表于 05-16 16:35 61次下载
    <b class='flag-5'>SH88F</b>6161和<b class='flag-5'>SH88F</b>6162 DEOM程序解决方案资料合集免费下载

    SH32F9001/32F9801高性能32位微控制器规格书

    电子发烧友网站提供《SH32F9001/32F9801高性能32位微控制器规格书.pdf》资料免费下载
    发表于 10-10 09:56 2次下载
    <b class='flag-5'>SH32F9001</b>/32<b class='flag-5'>F</b>9801高性能32位微控制器规格书

    SH79F161A和SH79F161B差异对照表

    电子发烧友网站提供《SH79F161A和SH79F161B差异对照表.pdf》资料免费下载
    发表于 10-12 11:41 4次下载
    <b class='flag-5'>SH79F</b>161A和<b class='flag-5'>SH79F</b>161B差异对照表

    SH88F2051B和SH88F2051A差异对照表

    电子发烧友网站提供《SH88F2051B和SH88F2051A差异对照表.pdf》资料免费下载
    发表于 10-12 15:35 2次下载
    <b class='flag-5'>SH88F</b>2051B和<b class='flag-5'>SH88F</b>2051A差异对照表

    SH32F9001系列微控制器产品应用指导性手册

    电子发烧友网站提供《SH32F9001系列微控制器产品应用指导性手册.pdf》资料免费下载
    发表于 10-12 09:15 0次下载
    <b class='flag-5'>SH32F9001</b>系列微控制器产品应用指导性手册

    SH-2E SH7059 F-ZTATTM SH7058S F-ZTATTM 硬件手册

    SH-2E SH7059 F-ZTATTM SH7058S F-ZTATTM 硬件手册
    发表于 04-19 19:46 0次下载
    <b class='flag-5'>SH</b>-2E <b class='flag-5'>SH</b>7059 <b class='flag-5'>F</b>-ZTATTM <b class='flag-5'>SH</b>7058S <b class='flag-5'>F</b>-ZTATTM 硬件手册

    SH7014SH7016SH7017F-ZTATTM 硬件手册

    SH7014 SH7016 SH7017F-ZTATTM 硬件手册
    发表于 04-28 19:20 0次下载
    <b class='flag-5'>SH7014SH7016SH7017F</b>-ZTATTM 硬件手册

    SH7050群 SH7050F-ZTAT SH7051F-ZTAT 硬件手册

    SH7050群 SH7050F-ZTAT SH7051F-ZTAT 硬件手册
    发表于 05-09 19:24 1次下载
    <b class='flag-5'>SH</b>7050群 <b class='flag-5'>SH7050F</b>-ZTAT <b class='flag-5'>SH7051F</b>-ZTAT 硬件手册

    SH7050群 SH7050F-ZTAT SH7051F-ZTAT 硬件手册

    SH7050群 SH7050F-ZTAT SH7051F-ZTAT 硬件手册
    发表于 06-27 20:46 0次下载
    <b class='flag-5'>SH</b>7050群 <b class='flag-5'>SH7050F</b>-ZTAT <b class='flag-5'>SH7051F</b>-ZTAT 硬件手册

    中颖电子SH32F9001_32F9801_CV2.3规格书

    中颖电子SH32F9001_32F9801_CV2.3规格书
    发表于 10-19 17:36 1次下载