查看: 6264|回复: 8

[已解决] KL16求SPI示例代码!!!(已解决)

[复制链接]

该用户从未签到

13

主题

62

帖子

0

注册会员

Rank: 2

积分
161
最后登录
1970-1-1
发表于 2014-5-21 23:08:52 | 显示全部楼层 |阅读模式
之前在KL15可以运行的SPIFLASH代码,跑到KL16上发现有问题,经过查看手册,发现了KL16多了一些寄存器,而且地址换了,因此我把相对于设置的寄存器和地址修改了,但是还是运行不了,不知道是否还需要设置其它东西。
我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

11

主题

354

帖子

0

高级会员

Rank: 4

积分
693
最后登录
1970-1-1
发表于 2014-5-21 23:30:05 | 显示全部楼层

回复:KL16求SPI示例代码!!!

KL16的程序是和KL26相同
楼主估计得从KL26的程序上修改了。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-5-22 09:37:54 | 显示全部楼层

    RE:KL16求SPI示例代码!!!

    能不能把目前的问题详细描述一下。另外发一下你的配置代码。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    802

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1763
    最后登录
    1970-1-1
    发表于 2014-5-22 11:23:47 | 显示全部楼层

    RE:KL16求SPI示例代码!!!

    正常情况下不要该函数
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13

    主题

    62

    帖子

    0

    注册会员

    Rank: 2

    积分
    161
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-22 12:18:33 | 显示全部楼层

    回复:KL16求SPI示例代码!!!

    回复第 3 楼 于2014-05-22 09:37:54发表:
    能不能把目前的问题详细描述一下。另外发一下你的配置代码。 

    我的初始化代码完全没变。只是之前对应的KL15的寄存器定义是:
    #if KL15
    typedef struct {
      __IO uint8_t C1;                                 /**< SPI control register 1, offset: 0x0 */
      __IO uint8_t C2;                                 /**< SPI control register 2, offset: 0x1 */
      __IO uint8_t BR;                                 /**< SPI baud rate register, offset: 0x2 */
      __I  uint8_t S;                                  /**< SPI status register, offset: 0x3 */
           uint8_t RESERVED_0[1];
      __IO uint8_t D;                                  /**< SPI data register, offset: 0x5 */
           uint8_t RESERVED_1[1];
      __IO uint8_t M;                                  /**< SPI match register, offset: 0x7 */
    } SPI_Type;
    #endif
    我修改成了
    #if KL16
    typedef struct {
      __IO uint8_t S; 
      __IO uint8_t BR;                                 /**< SPI baud rate register, offset: 0x2 */
      __IO uint8_t C2;                                 /**< SPI control register 1, offset: 0x0 */
      __IO uint8_t C1;                                 /**< SPI control register 2, offset: 0x1 */
      __I  uint8_t ML;                                  /**< SPI status register, offset: 0x3 */
      __I  uint8_t MH;                                  /**< SPI status register, offset: 0x3 */
      __IO uint8_t DL;                                  /**< SPI data register, offset: 0x5 */
      __IO uint8_t DH;                                  /**< SPI data register, offset: 0x5 */
      __IO uint8_t RESERVED_0[2];                                  /**< SPI data register, offset: 0x5 */
      __IO uint8_t CI;
      __IO uint8_t C3;                                  /**< SPI match register, offset: 0x7 */
    } SPI_Type;
    #endif
     
    同样是设置了对应的寄存器,16中多出的一些寄存器我没有设置。我初始化的是一款SPIFLASH.  SPI_ReadWriteByte函数我修改如下:
    uint16_t SPI_ReadWriteByte(SPI_Type *SPIx, uint16_t Data)
    {
      uint8_t temp;
      while(!(SPIx->S & SPI_S_SPTEF_MASK)); /* write finish? */
     #if KL16
     SPIx->DL = Data;
     #endif
     
     #if KL15
     SPIx->D = Data;
     #endif
     
      while(!(SPIx->S & SPI_S_SPRF_MASK)); /* read finish? */
     #if KL16
     temp = SPIx->DL;
     #endif
     
     #if KL15
     temp = SPIx->D;
     #endif
     
      return temp;
    }
    现在出现的问题是SPIFLASH初始化失败。ID读出来不正确。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-5-22 14:35:33 | 显示全部楼层

    RE:KL16求SPI示例代码!!!

    头文件可以直接用freescale提供的。不要自己修改。因为SPI的基地址可能也不一样。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13

    主题

    62

    帖子

    0

    注册会员

    Rank: 2

    积分
    161
    最后登录
    1970-1-1
     楼主| 发表于 2014-5-22 23:53:31 | 显示全部楼层

    回复:KL16求SPI示例代码!!!

    回复第 6 楼 于2014-05-22 14:35:33发表:
    头文件可以直接用freescale提供的。不要自己修改。因为SPI的基地址可能也不一样。 

    你好,问题解决了。按照我这样解决就行。是硬件问题,靠,害的我弄了这么久。伤不起。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-5-26 09:41:00 | 显示全部楼层

    回复:KL16求SPI示例代码!!!

    回复第 7 楼 于2014-05-22 23:53:31发表:
    回复第 6 楼 于2014-05-22 14:35:33发表:
    头文件可以直接用freescale提供的。不要自己修改。因为SPI的基地址可能也不一样。 

    你好,问题解决了。按照我这样解决就行。是硬件问题,靠,害的我弄了这么久。伤不起。
     

    恭喜楼主的问题解决了,谢谢你与大家分享经验。
    感谢你对飞思卡尔产品的关注!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    37

    帖子

    0

    注册会员

    Rank: 2

    积分
    163
    最后登录
    2018-3-16
    发表于 2014-12-22 18:10:14 | 显示全部楼层
    楼主,你好,能否把你的spi的代码发给我一份呢?
    如果可以,请发邮箱:wen.zhu@xrztech.com
    谢谢!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 21:36 , Processed in 0.101785 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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