查看: 8756|回复: 13

[MQX] MQX4.1+K60DN512 SPI驱动CS引脚问题

[复制链接]

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
发表于 2014-12-3 22:55:55 | 显示全部楼层 |阅读模式
楼下贴问题
我知道答案 目前已有13人回答
回复

使用道具 举报

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
 楼主| 发表于 2014-12-3 22:59:55 | 显示全部楼层
第一,现在遇到的问题是,MQX的底层默认调用SPI1,SPI1的4个数据线里面,对于片选信号,底层默认是调用CS0截图如下: SPI.jpg
这个文件是init_gpio.c文件内_mqx_int _bsp_dspi_io_init(uint32_t dev_num)这个函数中的内容。




回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
 楼主| 发表于 2014-12-3 23:03:23 | 显示全部楼层
第二:由于硬件已经接好了,用的是SPI1的CS1引脚,所以我需要改底层端口定义。但是底层_mqx_int _bsp_dspi_io_init(uint32_t dev_num)函数内的case 1:里面,虽然我把CS0引脚换成了CS1引脚,但是CS1的输出,始终不变化。CS0的输出也不变化,从这个现象来看,说明改动是有效果的,但是却没有成功。


改动后的代码如下:
SPI1.jpg
代码只改动了关于CS引脚的设置。

我尝试了把CS引脚换成SPI1的CS1,CS2和CS3.用示波器测量后,CS引脚都没有输出。同时CS0引脚也没有输出。说明还需要改动其他地方?才能让我的需求起到效果?希望FAE能解答下这个问题。非常感谢。
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
 楼主| 发表于 2014-12-3 23:05:47 | 显示全部楼层
其实我想问一个问题,FAE可以试试,如果你建立一个任务,然后这个任务的工作就是无延时翻转某个端口的电平,然后用示波器看下波形,会发现是20ms翻转一次,非常疑惑为何是20ms翻转一次,是不是内部参考了什么时钟,一直没有找到那个时钟在哪设置。因为项目要求到能够1ms翻转一次,所以希望FAE也能看下这个问题。谢谢~
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
 楼主| 发表于 2014-12-3 23:11:08 | 显示全部楼层
自己顶一顶,深夜发帖,无奈无奈~~
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

194

帖子

0

高级会员

Rank: 4

积分
551
最后登录
1970-1-1
 楼主| 发表于 2014-12-3 23:11:32 | 显示全部楼层
希望大家遇到和我一样的问题之后,能够不绕弯路。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-4 13:55:32 | 显示全部楼层
楼主你好!
你的问题我已经帮你转给我们的MQX工程师了,他会帮你解答,还请耐心等待下。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

196

帖子

0

中级会员

Rank: 3Rank: 3

积分
380
最后登录
1970-1-1
发表于 2014-12-5 10:54:05 | 显示全部楼层
楼主可以先参考这个帖子
http://community.freescale.com/message/392719#392719
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

57

帖子

0

中级会员

Rank: 3Rank: 3

积分
400
最后登录
2017-11-10
发表于 2014-12-5 17:07:01 | 显示全部楼层
感觉楼主测试IO口翻转的方法是不对的,你在任务里面测试,那这个任务多久被调用一次,这个还不知道,一般操作系统的tick 可能是10ms,所以这里这个时候任务呗调用的实际实际时间可能就已经超过10个ms了。如果要测试IO口,有两个方法:
1. 在定时器中断里面测试,你可以起一个定时器,把定时器中断时间设置为1us,然后每次进入中断翻转一次端口,如果正常的话你的方波频率是500k。根据你的CPU的速率,你可以不断提高定时器中断的频度,然后查看IO口输出的方波的频率
2. 看芯片是否有PWM功能,如果有,可以利用PWM输出看芯片的IO口输出方波频率

另外,关于SPI的问题,你可以看看寄存器的配置,看看这个SPI是不是有什么使能开关没有打开之类的导致SPI 的CS没有工作。

我个人的感觉是这些问题和MQX无关,你可以写一个裸奔程序直接来测试。这些都是底层驱动的问题。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-12-8 11:40:14 | 显示全部楼层
楼上说的很有道理。
至于SPI的CS开启,不仅仅你要控制PORT寄存器的mux,你还需要在SPI模块中选择相应的PCSx作为CS的信号。
所以配置下对应的SPIx_PUSHR[PCS[5:0]],选择具体你想要配置的CSx.
否则,虽然你修改了PORT口,CS0不会有输出,CSx因为没有被SPI模块选中,也不会有输出。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-20 16:50 , Processed in 0.110679 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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