查看: 2005|回复: 3

[求助] KSDK1.2的SPI Master Peripheral Driver库中如何实现CS的软件控制

[复制链接]
  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16715
    最后登录
    1970-1-1
    发表于 2015-8-5 23:35:03 | 显示全部楼层 |阅读模式
    最近在学习SDK1.2的SPI外设库。开发板使用YL-KL26Z, SPI主模式。
    可以看到下图KL26Z的SPI0的引脚,PTC4为SPI0的CS引脚。
    2801.jpg
    在使用SDK库编程时,使用下面库函数实现SPI主机初始化。
    2802.jpg
    使用下面的函数实现SPI主模式的阻塞方式通信。
    2805.jpg
    SPI通信中,一般CLK、MOSI、MISO都有硬件完成,CS可有硬件和软件来控制。但库文件中没有找到关于CS的选择,
    我阅读了SPI的库文件,发现在SPI_DRV_MasterInit函数中有关于片选信号的描述,
    使用SPI_HAL_SetSlaveSelectOutputMode函数设置成了自动输出模式。如下图。
    2803.jpg
    按照这个思路,我写了程序,用逻辑分析仪验证了一下,发现的确CS引脚在每次传输时自动拉低,完成后自动拉高。
    2804.jpg
    那么,可以看出这个CS是使用硬件自动完成控制的。

    我的问题来了:
    我现在不想用PTC4作为SPI0的CS引脚,或者我的SPI0上接了多个SPI外设,那么,必然要用GPIO口来实现CS片选信号。
    但SPI的Peripheral Driver库把这个固定设置好了,我如何实现CS引脚的软件控制?
    总不能要每次使用时都修改这个外设库吧?这样改动会大些吧,不仅仅是初始化函数,也包括其他的函数吧?
    大家来说说有什么好的解决办法,是如何处理的?


    我知道答案 目前已有3人回答

    评分

    参与人数 1NXP金币 +15 收起 理由
    小七 + 15 打赏!

    查看全部评分

    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-6 09:40:13 | 显示全部楼层
    SPI 模块的CS引脚是模块引脚控制的,配置好功能后,每次发送都会自动拉低,除非你把CS引脚功能跳成GPIO的,才可以实现自己控制。
    但是KSDK中已经是做好的,都是用SPI模块自行控制的,如果你要自己控制CS,势必要改驱动库,因为每次发送数据时候,你需要自己拉低CS GPIO,所以比较麻烦,我看了下驱动的API,是没有预留出这个自行控制的功能的。
    如果你一定要用KSDK,那么你就不能用driver层,你可以用HAL层,就像用寄存器控制那样,加上GPIO的CS控制。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16715
    最后登录
    1970-1-1
     楼主| 发表于 2015-8-6 11:26:56 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-8-6 09:40
    SPI 模块的CS引脚是模块引脚控制的,配置好功能后,每次发送都会自动拉低,除非你把CS引脚功能跳成GPIO的, ...

    我看也只能这样了,多谢指导
    那也就是说这个driver库目前只适合单外设模式
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-6 12:08:19 | 显示全部楼层
    lkl0305 发表于 2015-8-6 11:26
    我看也只能这样了,多谢指导
    那也就是说这个driver库目前只适合单外设模式 ...

    是的,否则你就需要修改里面的驱动,添加GPIO使能CS。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-28 05:00 , Processed in 0.101075 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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