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

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

3天内不再提示

MSPM0L1306开发板教程-SPI

创易栈 来源:创易栈 2023-07-08 10:56 次阅读

MSPM0L系列的SPI控制器最大频率是16MHz,支持3线和4线的模式,带有4个片选(CS),其中CS3支持命令模式(Command Mode)。

34378a2c-1cae-11ee-962d-dac502259ad0.png

SPI控制器有独立的4个字节接收和4个字节发送FIFO,主机数据位从7-16bit选择,从机数据位可以从4-16位选择。

3470e920-1cae-11ee-962d-dac502259ad0.png

下面通过配置一个操作外部SPI FLASH的程序来讲下SPI控制器的配置,FLASH的型号是华邦的W25Q128。

在SYSCONFIG中,添加一个SPI外设,频率最高16MHz,根据自己的需要选择,帧格式选择4线模式,8位数据位,高位在前,也就是MSB,时钟极性选择Low,也就是没有时钟的时候管脚是低电平,其他默认就可以。

34a19f84-1cae-11ee-962d-dac502259ad0.png

先来看下W25Q64的时序,我们用一个读芯片ID的时序来说明。

34ca519a-1cae-11ee-962d-dac502259ad0.png

SPI发送90h指令,地址为000000h,FLASH芯片就会返回工厂ID ,EFh和设备ID,这颗芯片ID是16h。

也就是说,SPI发送0x90,0x00,0x00,0x00这三个字节数据,芯片就会返回0xEF和0x16
需要注意的是,由于整个时序中,片选是要一直拉低的,而SPI 外设的片选在每次发送和接收完一帧后会拉高,所以FLASH的芯片的片选需要用MCU的IO口独立控制,没有办法使用SPI外设的CS管脚。

所以在SYSCONFIG里还配置了一个CS的GPIO。

34fbc0b8-1cae-11ee-962d-dac502259ad0.png

由于SPI的通讯时钟只能在发送操作的时候发出,读取操作是没有时钟信号发出的,所以在做读取操作的时候,其实需要发送操作,一般我们会发送同样与接收数据相同数量的0x00。

MSPM0L系列的SPI的控制寄存器CLT1中有一个REPEATTX,可以用来做重复发送操作,最高可以重复256次,例如我需要FLASH芯发送200帧数据,则REPEATTX为199,当我在程序中发送0x00的时候,SPI 控制器会发送200个0x00,形成200帧通讯时钟,程序比较简单。

351fa15e-1cae-11ee-962d-dac502259ad0.png

使用逻辑分析仪可以看到整个过程与FLASH芯片要求的时序一致。3551e93e-1cae-11ee-962d-dac502259ad0.png







审核编辑:刘清

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

    关注

    112

    文章

    15334

    浏览量

    172357
  • SPI接口
    +关注

    关注

    0

    文章

    256

    浏览量

    34008
  • FIFO存储
    +关注

    关注

    0

    文章

    103

    浏览量

    5904
  • SPI Flash
    +关注

    关注

    1

    文章

    13

    浏览量

    10253

原文标题:MSPM0L1306开发板教程11 - SPI

文章出处:【微信号:创易栈,微信公众号:创易栈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MSPM0L1306开发板教程之OPA

    MSPM0L系列的OPA是一个轨到轨输入输出的可编程运算放大器,最大为32x,可以软件配置为零漂移斩波放大器以提高精度和漂移性能,有专门优化的输入管脚的型号可以达到10pA的输入偏置电流,标准模式为6MHz带宽,低功耗模式下带宽为1MHz,电流100uA。
    发表于 07-15 09:58 760次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之OPA

    【触觉智能 Purple Pi开发板试用】点亮I2C_SSD1306

    Purple Pi开发板 板载了两个i2c,今天使用i2c0来驱动SSD1306。1、前面有几个大佬已经驱动过i2c,还有一个大佬用i2c驱动了LCD1602,那个教程写得非常的好。我查到了有个现成
    发表于 11-03 14:30

    【BPI-Pico-RP2040 开发板】SSD1306 OLED显示

    本文主要使用BPI-Pico-RP2040开发板驱动SSD1306 OLED模块。一、硬件(一)BPI-Pico-RP2040 开发板BPI-Pico-RP2040是 Banana Pi 推出的一款
    发表于 03-26 22:52

    MSPM0 G 系列 MCU 硬件开发指南

    MSPM0 G 系列微控制器 (MCU) 产品系列提供多种具有超低功耗和集成式模拟数字外设的 32 位 MCU,适用于检测、测量和控制应用。本应用手册涵盖了使用 MSPM0 G 系列 MCU 进行
    发表于 04-12 13:52

    MSPM0L1306开发板教程之开发环境搭建

    TI的MSPM0L系列的开发,可以使用KEIL,IAR,CCS等开发环境。仿真器可以使用ARM开发常用的JLINK,以及TI的XDS仿真器。
    的头像 发表于 04-23 10:11 6112次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之<b class='flag-5'>开发</b>环境搭建

    MSPM0L1306开发板教程之GPIO输入输出

    GPIO算是所有MCU入门的第一步,今天的教程就来教大家设置MSPM0L系列的GPIO的输入输出功能。
    的头像 发表于 05-04 17:22 3428次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之GPIO输入输出

    MSPM0L1306开发板教程之运行模式

    今天的教程讲下MSPM0L系列的运行模式。
    的头像 发表于 05-29 11:21 1665次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之运行模式

    MSPM0L1306开发板教程之DMA

    DMA使用是一个不需要CPU干预,自己搬运数据的模块,在前面讲中断事件的章节里面,就有提到过事件的DMA通道,DMA事件路由(DMA Event Route)。
    的头像 发表于 06-09 18:21 1675次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之DMA

    MSPM0L1306开发板教程之ADC

    MSPM0L系列的ADC是一个12bit的SAR ADC,采样频率最高1.45MHz,最高可做到11.2位的实际有效位(ENOB)。
    的头像 发表于 06-10 10:16 2079次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之ADC

    MSPM0L1306开发板教程之通用定时器

    MSPM0L系列的通用定时器(TIMG)是一个16位的自动重装定时器,支持向下和上下计数两种模式,同时带有两个比较捕获单元,可以做到输出比较,输入捕获,PWM输出,单脉冲输出等功能。
    的头像 发表于 06-30 15:50 2118次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之通用定时器

    MSPM0L1306开发板教程之I2C

    MSPM0L系列的I2C支持主从模式,有7位地址位可以设置,速率最大1Mbps,无论是主机或者从机,发送和接收都有独立的8个字节FIFO。
    的头像 发表于 06-30 15:50 2020次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之I2C

    MSPM0L1306开发板教程- NVM(FLASH)

    MSPMPL系列中的NVM(Non Volatile Memory)非易失性存储,也就是我们常说的FLASH。
    的头像 发表于 07-08 10:52 1715次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程- NVM(FLASH)

    MSPM0L1306开发板教程之COMP

    MSPM0L带有模拟比较器功能,可以用于模拟信号的比较,用于中断MCU或者触发MCU其他外设。
    的头像 发表于 07-15 09:56 1009次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之COMP

    MSPM0L1306开发板教程之WWDT

    窗口看门狗WWDT,MSPM0L系列的看门狗的时钟使用的是32KHz的LFCLK,计数器有25位,寄存器可以有8个可选的计数周期,加上时钟的最大8分频,也就是有64档计数周期可选,从1.95ms到8190s,有两个阈值,关闭窗口(closed window)和打开窗口(open window)。
    的头像 发表于 07-15 10:01 779次阅读
    <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>教程之WWDT

    TI MSPM0L1306开发板简介

    看参考设计的时候看到了这个芯片,和以往烂大街的芯片不一样,它发布于今年3月。这个芯片更是TI这个老师傅狠狠的将活注入到MCU里面产生的奇妙产物。
    的头像 发表于 12-15 10:00 1862次阅读
    TI <b class='flag-5'>MSPM0L1306</b><b class='flag-5'>开发板</b>简介