查看: 3683|回复: 1

开源可编程手环学习第四步--SPI教程

[复制链接]
  • TA的每日心情
    开心
    2015-10-31 10:17
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2015-10-30 10:26:55 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 lovediy2015 于 2015-10-30 10:30 编辑

    术语和定义

    BLE             低功耗蓝牙(Bluetooth Low Energy)
    SDK            软件开发工具包(Software Development Kit)
    UUID          通用唯一标识符(Universally Unique Identifier)
    APP            手机应用软件(Application)
    MAC           媒体访问控制(Media Access Control)
    GPIO           通用输入输出(General Purpose Input/Output)
    INT             中断(Interrupt)
    ADC            模数转换(Analog to Digital Converter)
    I2C             集成电路通信总线(Inter-Integrated Circuit bus)
    SPI             串行外设接口(Serial Peripheral Interface)
    UART          通用异步收发器(Universal Asynchronous Receiver/Transmitter)

    开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
    手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI
    淘宝小店:shop115904315.taobao.com


    第一节  SPI Flash硬件电路


            SPI_Flash可用于存储程序以及一些数据,如果需要存储程序则必须连接在规定的引脚,手环上选用的MCU引脚分别为:P00,P03,P05,P06,如下图所示:
    1.jpg



    第二节 SPI+寄存器


    2.1 SPI+介绍
            这个接口支持SPI总线的一个子集。这个串行接口在主/从模式可以发送和接收8、16或32位,并且在主模式可以发送9位。SPI+接口有双向的2×16位字的FIFO,功能得到了增强。该接口可以工作在主或从模式;有8、9、16、32位的操作方式;SPI控制器的时钟达到16MHz,SPI时钟源可以通过编程进行1、2、4、8分频;SPI的时钟线达到8MHz;支持SPI的0、1、2、3四种工作模式;SPI_DO的空闲电平可以通过编程设置;可屏蔽的中断发生器;单向读和写模式降低总线负载。
    2.2 寄存器介绍
    2.2.1 SPI控制寄存器0
    2.jpg
    3.jpg
            15位:SPI_EN引脚是否有效,’0’表示无效,’1’表示有效;
            14位:SPI中断使能位,’0’表示无效,’1’表示有效;
            13位:’0’表示接收寄存器或FIFO为空,’1’表示SPI中断,数据已经被发送或接收,该位必须通过软件写SPI_CLR_INT_REG清零;
            12位:返回SPI_DI引脚的状态值;
            11位:‘0’表示发送FIFO满,‘1’表示发送FIFO空;
            10位:‘0’正常模式,‘1’使SPIDO的值等于SPI_DO的值;
            9位:‘0’正常操作,‘1’复位SPI;
            8:7位:SPI数据格式;
            6位:SPI工作模式,‘0’为主设备,‘1’为从设备;
            5位:当SPI处于空闲模式或者当SPI_FORCE_DO=1时引脚SPI_DO的值;
            4:3位:SPI在主模式下的时钟频率选择;
            2位:SPI时钟初始电平的高低,‘0’为低,‘1’为高;
            1位:SPI时钟的相位选择,具体看SPI的时序图;(SPI的资料)
            0位:SPI的开关。
    2.2.2 SPI接收/发送寄存器0
    4.jpg
        15:0位:SPI发送或接收的数据,写操作是,存储发送的数据,读操作时,为接收到的数据。
    2.2.3 SPI接收/发送寄存器1
    5.jpg
        15:0位:SPI发送或接收的数据,写操作是,存储发送的数据,读操作时,为接收到的数据;为32位模式的高16位数据。
    2.2.4 SPI清除中断寄存器
    6.jpg
        15:0位:写任意值到该寄存器清除SPI的中断标志。
    2.2.5 SPI控制寄存器1
    7.jpg

        15:5位:保留不使用;
        4位:决定在9位模式下的第一位的值;
        3位:SPI忙标志位,‘0’表示SPI空闲,‘1’表示SPI忙;
        2位:SPI优先级选择位,‘0’低优先级,‘1’高优先级;
        1:0位:SPI_FIFO模式。

    2.3 寄存器配置讲解
    #define CLK_PER_REG             (* ( volatile uint16*)0x50000004)
    #define SPI_CTRL_REG             (* ( volatile uint16*)0x50001200)
    #define SPI_RX_TX_REG0           (* ( volatile uint16*)0x50001202)
    #define SPI_RX_TX_REG1           (*( volatile uint16*)0x50001204)
    #define SPI_CLEAR_INT_REG        (* ( volatile uint16*)0x50001206)
    #define SPI_CTRL_REG1             (* ( volatile uint16*)0x50001208)
    启动SPI模块的时钟:CLK_PER_REG |= 0x0800;
    SPI的初始化配置寄存器:
    先关闭SPI,SPI_CTRL_REG =0x8000;
    SPI配置为8位模式,主模式,时钟空闲为低电平,相位模式0,关闭SPI中断,时钟8分频(0x1000000000000000),则SPI_CTRL_REG =0x8000;
    开SPI,SPI_CTRL_REG | =0x0001;
    发送一个字节0x55,将数据填充进发送寄存器SPI_RX_TX_REG0 = 0x55;等待发送寄存器为空while(SPI_CTRL_REG&0x2000);
    接收一个字节,读取接收寄存器rx_data = SPI_RX_TX_REG;


    第三节 SPI实验


              实验需要使用的模块有:手环,Jlink调试工具,USB转串模块,一根手环下载调试线。
              将JLINK通过下载调试线连接到手环的USB调试接口,JLINK插在有拨码开关的一端,注意丝印标注一一对应,将JLINK插上电脑的USB口。将USB转串模块插在手环现在调试线的另一端,注意丝印标注一一对应,然后将USB转串模块插在电脑的USB接口。如下图所示:
    8.jpg
             SPI实验的Keil工程为SPI_Test.uvproj,位于目录:..\Mooband v1.3\4_实战教程\1_裸机篇\6_SPI实验\SPI实验,如下图所示:
    9.jpg
             打开串口调试助手连接串口模块。在KEIL中编译源代码,点击DEBUG,然后点击全速运行,就看到串口打印出的读写Flash的信息,如下图所示:
    10.jpg

    11.jpg

    开发板系列教程:http://pan.baidu.com/s/1bnBJsMr
    手环DIY开源学习教程:http://pan.baidu.com/s/1eQlUGiI
    阅读软件:http://pan.baidu.com/s/1o6ELGCE
    淘宝小店:shop115904315.taobao.com


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-10-31 10:17
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

     楼主| 发表于 2015-10-31 09:53:55 | 显示全部楼层
    stary666 发表于 2015-10-30 15:11

    开发板系列教程:pan.baidu.com/s/1bnBJsMr
    手环DIY开源学习教程:pan.baidu.com/s/1eQlUGiI
    阅读软件:pan.baidu.com/s/1o6ELGCE
    淘宝小店:shop115904315.taobao.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-6-16 01:50 , Processed in 0.123882 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.