2687|0

1305

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

[经验] FRDM-KW41Z SPI调试中遇到的奇怪时钟问题 [复制链接]

本帖最后由 yang_alex 于 2017-7-24 21:33 编辑

       有幸拿到了FRDM-KW41Z板子,准备做智能时钟。既然是智能时钟,肯定是要有显示界面的了。不过FRDM-KW41Z板子引脚不多,所以选择了SPI接口的LCD。这种SPI接口的LCD,我在其他项目中也用过,很好用。

       收到板子后,直接开整。接线,移植代码。。。。。。

       结果发现LCD没些显示,把LCD屏换到以前项目,验证LCD屏是好的。那就是代码移植的问题了。查代码。。。。。。。

      主要是SPI部分(不同厂家代码都不同,即使都是ARM),看来看去还是没头绪,老办法,用示波器看看总线波形,结果问题看出来了,SPI的数据时钟应该是8位的,怎么变成16位的了!!!另外时钟相位也不对啊!不过问题总算是定位到SPI设置上了,范围缩小,着重查SPI初始化!


正确的长这样

      结果发现自己画蛇添足,想当然地修改了一个参数,导致SPI时钟出现异常。赶紧找DEMO程序改过来。哈哈!久违的界面终于出现了。


  1.     dspi_transfer_t masterXfer;

  2.     DSPI_MasterTransferCreateHandle(SPI1, &dspi_g_m_handle, NULL, NULL);//bound the DMA handle to SPI1

  3.     /* Master config */
  4.     masterConfig.whichCtar = kDSPI_Ctar0;//kDSPI_Ctar1   XXXXX
  5.     masterConfig.ctarConfig.baudRate = TRANSFER_BAUDRATE;
  6.     masterConfig.ctarConfig.bitsPerFrame = 8U;
  7.     masterConfig.ctarConfig.cpol = kDSPI_ClockPolarityActiveLow;//kDSPI_ClockPolarityActiveHigh;
  8.     masterConfig.ctarConfig.cpha = kDSPI_ClockPhaseSecondEdge; //kDSPI_ClockPhaseFirstEdge;
  9.     masterConfig.ctarConfig.direction = kDSPI_MsbFirst;
  10.     masterConfig.ctarConfig.pcsToSckDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;
  11.     masterConfig.ctarConfig.lastSckToPcsDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;
  12.     masterConfig.ctarConfig.betweenTransferDelayInNanoSec = 1000000000U / TRANSFER_BAUDRATE;
  13.     masterConfig.whichPcs = kDSPI_Pcs0;//EXAMPLE_DSPI_MASTER_PCS_FOR_INIT;
  14.     masterConfig.pcsActiveHighOrLow = kDSPI_PcsActiveLow;
  15.     masterConfig.enableContinuousSCK = false;
  16.     masterConfig.enableRxFifoOverWrite = false;
  17.     masterConfig.enableModifiedTimingFormat = false;
  18.     masterConfig.samplePoint = kDSPI_SckToSin0Clock;

  19.     srcClock_Hz = DSPI_MASTER_CLK_FREQ;
  20.     DSPI_MasterInit(EXAMPLE_DSPI_MASTER_BASEADDR, &masterConfig, srcClock_Hz);
复制代码


就是这一行,Demo程序用的是SPI0,我的SPI LCD用的是SPI1,想当然的改成了kDSPI_Ctar1。这错犯的太低级了。
masterConfig.whichCtar = kDSPI_Ctar0;//kDSPI_Ctar1   XXXXX

此帖出自NXP MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表