查看: 1715|回复: 8

[求助] MK22基于SDK的DSPI使用求助

[复制链接]
  • TA的每日心情
    慵懒
    2019-3-28 10:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2019-4-10
    发表于 2019-3-26 14:19:03 | 显示全部楼层 |阅读模式
               使用最新的SDK 2.5调试DSPI,逻辑分析仪抓到的时序是错误的,片选采用软件控制,在传输过程中发现SCK的不正确,初始化代码如下:
    1. masterConfig.whichCtar = kDSPI_Ctar0;
    2.         masterConfig.ctarConfig.baudRate = TRANSFER_BAUDRATE;
    3.         masterConfig.ctarConfig.bitsPerFrame = 8U;
    4.         masterConfig.ctarConfig.cpol = kDSPI_ClockPolarityActiveLow;
    5.         masterConfig.ctarConfig.cpha = kDSPI_ClockPhaseFirstEdge;
    6.         masterConfig.ctarConfig.direction = kDSPI_MsbFirst;
    7.         masterConfig.ctarConfig.pcsToSckDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;
    8.         masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec = 1000000000U ;
    9.         masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;

    10.         masterConfig.whichPcs = kDSPI_Pcs0;
    11.         masterConfig.pcsActiveHighOrLow = kDSPI_PcsActiveLow;

    12.         masterConfig.enableContinuousSCK = false;
    13.         masterConfig.enableRxFifoOverWrite = false;
    14.         masterConfig.enableModifiedTimingFormat = false;
    15.         masterConfig.samplePoint = kDSPI_SckToSin0Clock;
    复制代码
          数据收发代码如下:
    1. static unsigned char board_hard_spr_wirte_read(unsigned char msg)
    2. {
    3.         dspi_transfer_t masterXfer;
    4.         unsigned char read = 0, write = msg;
    5.        
    6.         masterXfer.txData = &write;
    7.         masterXfer.rxData = &read;
    8.         masterXfer.dataSize = 1;
    9.         masterXfer.configFlags = kDSPI_MasterCtar0 | kDSPI_MasterPcsContinuous;
    10.         DSPI_MasterTransferBlocking(SPI0, &masterXfer);
    11.        
    12.         return read;
    13. }
    复制代码

    根据配置SCK空闲状态下应为低电平,正确时序如图


    请教:出现此问题是原因是配置错误?使用方式不对?该如何解决!谢谢!
    我知道答案 目前已有8人回答

    正确时序

    正确时序

    错误时序

    错误时序
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20039
    最后登录
    2024-4-26
    发表于 2019-3-26 17:41:02 | 显示全部楼层
    工程测试中的代码有没有经过什么修改,还是直接使用原例程进行测试的?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-3-28 10:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2019-4-10
     楼主| 发表于 2019-3-26 20:19:16 | 显示全部楼层
    小恩GG 发表于 2019-3-26 17:41
    工程测试中的代码有没有经过什么修改,还是直接使用原例程进行测试的?

    有修改:片选改为软件控制,SPI的工作模式也修了(在spi初始化代码里有体现)。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20039
    最后登录
    2024-4-26
    发表于 2019-3-27 09:54:01 | 显示全部楼层
    jingjing12 发表于 2019-3-26 20:19
    有修改:片选改为软件控制,SPI的工作模式也修了(在spi初始化代码里有体现)。 ...

    请详细介绍介绍一下代码修改的部分,方便查找问题。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-3-28 10:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2019-4-10
     楼主| 发表于 2019-3-27 11:04:29 | 显示全部楼层
    小恩GG 发表于 2019-3-27 09:54
    请详细介绍介绍一下代码修改的部分,方便查找问题。

    1、SPI的引脚换了,之前的PTC 4,5,6,7换成了PTD 4,1,2,3(分别对应 CS,  SCK,   MOSI,  MISO。
    2、时钟极性改了
    注:代码和时序图都附在上面的帖子里。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    20039
    最后登录
    2024-4-26
    发表于 2019-4-2 16:36:24 | 显示全部楼层
    本帖最后由 小恩GG 于 2019-4-2 16:37 编辑
    jingjing12 发表于 2019-3-27 11:04
    1、SPI的引脚换了,之前的PTC 4,5,6,7换成了PTD 4,1,2,3(分别对应 CS,  SCK,   MOSI,  MISO。
    2、时 ...

    对比你贴出的两个图及分析你的描述,你的错误时序是指SCK在传输数据过程中有个延迟吗?
    我的建议你能否详细的描述一下或者在图中标出。
    根据你说修改的地方,我不知道你的软件控制CS是上面代码的哪里体现了,至于引脚变换和工作模式变化,我觉得应该不会影响通信的最终结果
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-3-28 10:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2019-4-10
     楼主| 发表于 2019-4-10 13:03:18 | 显示全部楼层
    小恩GG 发表于 2019-4-2 16:36
    对比你贴出的两个图及分析你的描述,你的错误时序是指SCK在传输数据过程中有个延迟吗?
    我的建议你能否详细 ...

    1、SCK出现的情况不是延时,是出错;
    2、CS代码我附图。C:\Users\DELL\Desktop\搜狗截图19年04月10日1302_1.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-3-28 10:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    2019-4-10
     楼主| 发表于 2019-4-10 13:04:58 | 显示全部楼层
    小恩GG 发表于 2019-4-2 16:36
    对比你贴出的两个图及分析你的描述,你的错误时序是指SCK在传输数据过程中有个延迟吗?
    我的建议你能否详细 ...

    CS图没有附上,我发源码
    void board_spi_select(void)
    {
             GPIO_PinWrite(GPIOB, 16U, 0);
    }

    void board_spi_disselect(void)
    {
             GPIO_PinWrite(GPIOB, 16U, 1);
    }
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2018-1-21 21:10
  • 签到天数: 1 天

    [LV.1]初来乍到

    12

    主题

    41

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    243
    最后登录
    2020-5-9
    发表于 2019-5-5 21:05:36 | 显示全部楼层
    jingjing12 发表于 2019-4-10 13:04
    CS图没有附上,我发源码
    void board_spi_select(void)
    {

    想问下,你的代码没有将硬件的CS脚关掉,只是另外用了一个IO口当做CS,那么硬件CS脚还能做普通IO使用吗
    问题好多
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-27 12:47 , Processed in 0.149203 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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