查看: 33869|回复: 134

[原创] 【YL-KL26Z开发笔记+视频讲解】KL26多种SPI工作模式分享【已....

  [复制链接]

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
发表于 2015-7-2 21:38:35 | 显示全部楼层 |阅读模式
本帖最后由 Veikoboy 于 2015-9-24 21:07 编辑

    申明:本贴同时作为使用计划贴和使用分享贴,因此,后期分享的内容也在此贴当中哦!    KL26Z128xxx4是飞思卡尔的一款基于Cortex-M0+内核的MCU,在保持以往飞思卡尔优秀模块的基础上优化了代码执行效率和功耗,并有多种外设接口。在论坛看到很多人在问SPI相关的东西,我也在这里献丑,来玩一玩SPI,希望能够玩得比较深入,至少SPI主模式与从模式以及四种常用的工作模式要一一试一下,并进行说明,当然中间可能有些东西掌握的有误,还希望各位大侠不吝赐教,感激不尽!!这次分享可能涉及到一些KL26的其他模块以及一些外围器件,比如基于SPI的ADC,SPI_Flash,SPI液晶等,先来个大概的计划:

1. 从零搭建Keil下开发的KL26基础工程

2. I/O用于外设时的配置

3. 简单KL26介绍时钟模块

4. SPI及KL26的SPI模块简介

5. SPI主机/从机通信

6. SPI主机模式读写W25X16(SPI_Flash)

7. 使用KL26的SPI主机模式驱动SPI接口的ADC

8. 其他

每一步都先占用一个楼层,大家谅解

晒板20150704.JPG


想听楼主更为详细的讲解么? 可以移步moore8视频课程:快速掌握KL26Z系列MCUSPI模块关于视频的说明:由于开始发布的时候出了小问题,视频没有发布成功,导致了评分很差,现在已经修改了。
本贴已于2015年9月24号晚上21点08分由楼主更新完基本计划内容,后期也还可能有更新……










回复

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:38:58 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-9 16:31 编辑

1. 从零搭建Keil下开发的KL26基础工程
从零开始搭建KeilKL26的开发环境(基础工程的建立)

做单片机的开发有一段时间了,个人觉得单片机的第一个基础工程的搭建很重要,不管官方有没有提供基础工程的模板(当然最开始的时候测试板卡建议能用官方提供的工程模板),因为这种模板工程的搭建有助于开发者了解工程所需要的各个文件的作用,加速后期的开发。一般情况下我们搭建一个基础工程的模板有两种方式,根据官方提供的文档完完全全自已动手,采用这种方式搭建一般会花费大量的时间,我建议大家采用第二种方式,即尽量模仿来搭建,因为我们只需要大概的掌握工程的结构,然后了解相关文件的作用,比如中断向量在哪里,中断函数如何写,启动文件中哪部份代码起什么作用等等,下面直接进行步骤了:
一、 确认你的开发环境中是否有MCU的支持库
打开Keil 5开发工具,打到 图片1.png 一栏中的最后一个图标点击查看是否已安装相应的器件支持包。在Packs选项卡中我们要格外注意”ARM::CMSIS”和”Keil::Kinetis_KLxx_DFP”两个包,我们要开发KL26系列的MCU必须确保这两个支持包已正确地安装。
二、 选择KL26Z128xxx4芯片新建工程
Project->New uVision Project...->选择工程存放目录->输入工程名称->如下图中所示选择目标芯片:

图片2.png

在下面的对话框中不添加任何东西进工程,直接点OK即可:

图片3.png

三、 复制官方提供的代码添加进工程
    这一步主要就是看官方例子工程里面有哪些文件,然后每个文件打开看看里面有些什么东西,看看注释大概起什么作用,然后是否一定要添加进工程(这个有时候需要测试才知道)。这一步中只要求"满足某些必要文件存在"即可,没有必要完完全全按照官方工程建立目录,因为有时候你需要更加符合自已习惯的文件目录结构或者公司规定的目录结构。
四、 测试->修改->测试
    完成第三步后,打开另一个例子工程,可以将其应用代码复制过来(这个应用代码最好容易测试,比如闪个灯什么的或者串口),然后编译,链接,下载,跑起来看看,仿个真什么的,看有没有问题,如果有,继续和官方工程对比,如果没有,那可以暂时看作工程的建立完成了。
五、 上传一个我的基础工程吧
FRDM_KL26Z128xxx4_GPIO_MDK5.14_KL26_SC_Rev_1.0.rar (2.51 MB, 下载次数: 173)
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:39:14 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-9 15:21 编辑

2. I/O用于外设时的配置    通常情况下,我们使用任何一个KL26外设模块(包括IO模块)都要先使能其外设时钟,这样外设才能正常地工作起来。如果我们要将IO应用于某个指定的外设(除IO以外的如IIC和SPI或UART等接口功能引脚)时,我们还需要将IO配置为指定的外设引脚,在KL26 MCU中有一个叫做Signal multiplexing integration的东西,功能很强大,配置起来也比较容易,先看看他的工作原理框图:

Image 2.png

一个外设的同一个功能引脚可以分配给多个具有该外设对应引脚功能的IO,在使用一个外设时(绘制电路和编写程序时都必须注意的)我们必须关心,能够实现该外设功能的相关引脚分布,K26所有的引脚及其复用外设功能都在参考手册的第十章表格中提到,如下截图:

Image 3.png

Image 4.png

Image 5.png

Image 6.png

Image 7.png
结合KL26光盘中的例程,我们可以使用以下方式来初始化用于SPI模块的IO端口复用功能:

  1.     /*
  2.      *  开启PB PD PE PC GPIO时钟
  3.      */
  4.     SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK | SIM_SCGC5_PORTC_MASK;
  5.        
  6.     /*
  7.      *  SPI的管脚初始化
  8.      */
  9.     PORTB_PCR0  |= PORT_PCR_MUX(1);                                     /* 开启PB0管脚GPIO功能 SPI0 CS1 */
  10.     PORTC_PCR5  |= PORT_PCR_MUX(2)|(uint32_t)~(uint32_t)PORT_PCR_MUX(5); /* 开启PC5管脚SPI0功能 SPI0 SCK */
  11.     PORTC_PCR6  |= PORT_PCR_MUX(2)|(uint32_t)~(uint32_t)PORT_PCR_MUX(5); /* 开启PC6管脚SPI0功能 SPI0 MOSI*/
  12.     PORTC_PCR7  |= PORT_PCR_MUX(2)|(uint32_t)~(uint32_t)PORT_PCR_MUX(5); /* 开启PC7管脚SPI0功能 SPI0 MISO*/
  13.     FGPIOB_PSOR |= 1<<0; /* 配置CS1置高 */
  14.     FGPIOB_PDDR |= 1<<0; /* 配置CS1为输出 */
复制代码

至于SPI模块的初始化就看下面的楼层了,本楼结束!



回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:39:33 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-10 15:12 编辑

3. 简单介绍KL26时钟模块
就喜欢玩图,特别是框图,因为从框图里你就知道了大概,然后怎么配置时钟,从哪里配置,也能在框图中有所体现,比如说下面的框图就明确的告诉了我们该MCU有哪些时钟源,每个时钟源能够作为哪些外设的时钟源,可不可以分频,最大频率是多少等等,有不清楚的,再去看芯片手册里的详细说明,寄存器位的介绍等。
Image 5.png

下面这个表格说了一下内部时钟通常情况下的配置情况,当然,一切还得看你自已怎么配。

Image 7.png

寄存器就不说了,大家不去看资料,这里说得再多也无益,大家觉得呢……



回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:39:52 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-9 15:55 编辑

4. SPI及KL26的SPI模块简介
SPI的基础学习,给大有推荐个地址,感觉很不错,那就是很火火火火的Arduino官网关于SPI介绍的网址: SPI基础讲解

至于KL26相关的说明,请大家稍等哦!
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:40:09 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-10 11:20 编辑

5. SPI主机/从机通信


如下图所示,焊接黄色排针的作为主机,焊接黑色排针的作为从机,实现主从通信,具体的配置及代码稍后贴出来^^^


IMG20150710095308副本.jpg
经过楼主的努力,主机与从机通信这件事儿的基础版本算是完成了,就先上传基础版本吧,至于后面的什么FIFO和什么DMA配套的应用更新不,我个人觉得意义不大,毕竟大家得自已搞一部分是吧,但欢迎计论,有问题大家一起解决嘛

先看看主机接收到的数据吧

主机接收到的内容.png

再看看从机接到的数据

从机接收到的内容.png
最后,上工程文件:

KL26_SPI_Device.zip (1.81 MB, 下载次数: 143)
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:40:25 | 显示全部楼层
本帖最后由 Veikoboy 于 2015-7-9 15:24 编辑

6. SPI主机模式读写W25Q32(SPI_Flash)
这个例子是从飞思卡尔官方的例程中移过来的,不过只要能用,并且能够体现对KL26的SPI操作流程要点这些东西,也是不错,大家说是不是呢?先简单了解一下W25Q32的SPI接口特性,然后再大张齐鼓地放代码,嘿嘿!


针对SPI编程,我们只需要了解以下W25Q16的相关信息即可,其他的什么寄存器啊,读写指令之类的只有完完全全自已写驱动时需要,我们这里考虑简单点,做个移植就OK了…………


1. 最大时钟频率:75MHz
2. 四条信号线:CLK  CS  DIO  DO
3. 支持的SPI  SCK_Mode :Mode_0(0,0)和Mode_3(1,1)【下面有两种模式的驱动代码】
4. 传输时数据最高有效位在前(MSB-First)
5. 传输数据宽度: 8-bit

下面这个SPI接口时序图就能反映上面提到的特性:


Image 1.png

代码来了,包含整个工程哈: KL26_SPI_W25Q32【SPI_Flash--SPI_SCK_Mode0(0,0)】.zip (4.16 MB, 下载次数: 162)
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

169

帖子

0

高级会员

Rank: 4

积分
665
最后登录
2017-5-23
 楼主| 发表于 2015-7-2 21:40:41 | 显示全部楼层

使用KL26 SPI与TLV2543 12位ADC通信

本帖最后由 Veikoboy 于 2015-9-24 21:16 编辑

7. 使用KL26的SPI主机模式驱动SPI接口的ADC
首先大家要看看TLV2543芯片的资料了 tlv2543.pdf (553.08 KB, 下载次数: 19)
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    11245
    最后登录
    2019-1-27
    发表于 2015-7-3 09:11:31 | 显示全部楼层
    楼主的准备工作不错啊~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-18 11:35
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    21

    主题

    945

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2001
    最后登录
    2020-6-8
    发表于 2015-7-3 10:06:12 | 显示全部楼层
    期待楼主的分亨。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-14 09:08 , Processed in 0.137286 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表