查看: 4664|回复: 4

[原创] K64 SPI设置连续时钟模式无法使能片选疑问

[复制链接]
  • TA的每日心情
    奋斗
    2016-12-16 15:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    12

    主题

    61

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2018-1-24
    发表于 2017-12-10 17:40:14 | 显示全部楼层 |阅读模式
    通信流程:使用mcu为MK64FN1M0,开发环境为Keil mdk5,mcu的SPI0与FPGA 通信,mcu为主设备,FPGA为从设备,FPAG与mcu之间连接一根GPIO,FPGA开始发送数据的时候给GPIO产生一个上升沿,通知mcu开始接受数据。mcu接受数据的时间不能超过100us。


    实现的方式:
    GPIO配置为上升沿中断,SPI0硬件实现+DMA,spi的接受数据函数放在GPIO的中断服务程序里面

    遇到的问题:

    1.为了提高响应时间,时钟需要配置为持续时钟,

    SPI0 的时钟模式配置为  enableContinuousSCK = false; 时,时钟,片选,SOUT通过示波器抓都正常,
    SPI0 的时钟模式配置为  enableContinuousSCK = true;  时,时钟产生正常,片选,SOUT通过示波器都不响应,

    想知道时钟配置为持续时钟时,是不是有其他关联的配置,才导致片选,SOUT都不响应?
    如果我SOUT引脚不发送任何数据, 且enableContinuousSCK = false; 能否给从设备提供时钟和片选?

    2.要求fpga发送数据的时候 mcu不需要给fpga发送任何东西,根据demo修改接受fpga的数据调用的是

    DSPI_MasterTransferEDMA(EXAMPLE_DSPI_MASTER_BASEADDR, &g_dspi_edma_m_handle, &masterXfer),
    此处结构体masterXfer里面有设置的txData,rxData,

    我怎么实现只接受fpga的数据,我给txData是否传入一个空指针NULL,
    而且我什么时候开始接受数据?是发送数据的同时在进行接受数据吗?




    回复

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-12-11 08:00:39 | 显示全部楼层
    1、首先你不要违反SPI的协议规定,去核实一下主机产生时钟还是从机产生
    2、SDK代码都给你了,自己去看代码怎么实现,能不能满足你的要求,不满足可以改写
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-1-4 08:05
  • 签到天数: 11 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    85

    主题

    1629

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2569

    优秀版主

    最后登录
    2019-3-28
    发表于 2017-12-11 11:06:30 | 显示全部楼层
    zsltx 发表于 2017-12-11 10:09
    1.查看spi标准,主机只读从设备数据,也需要提供一个dummy data,用来给从设备提供时钟,从设备只是不管 ...

    不要在意SDK怎么写,有时候是为了一个统一的标准,进去看看这个到底用没用到,然后用看寄存器说明,这是解决问题的步骤,必要的时候接个逻辑分析仪抓个log比啃半天手册都有说服力,我不关心铁还是钢,我只关心问题该怎么排查,怎么解决。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    连续签到: 1 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5618
    最后登录
    2021-12-22
    发表于 2017-12-11 11:29:31 | 显示全部楼层
    本帖最后由 okwh 于 2017-12-11 11:32 编辑

    感觉有些乱,如果MCU是主设备,片选时钟都是主设备控制的,即MPU取数据,从设备发现需要后发送。
    怎么看描述象是FPGA主动发送呢?

    估计只能用例子修改试验了  同时涉及中断、SPI、DMA,论坛上很难说清了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-9-17 13:22
  • 签到天数: 238 天

    连续签到: 1 天

    [LV.7]常住居民III

    30

    主题

    905

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    2251
    最后登录
    2024-10-8
    发表于 2017-12-29 15:03:28 | 显示全部楼层
    keil没调过,既然认为SPI的寄存器设置有问题,不如在调试环境中看看。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 16:45 , Processed in 0.088213 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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