请选择 进入手机版 | 继续访问电脑版
搜索
查看: 110|回复: 5

MKE06单片机SPI通信疑问

[复制链接]

该用户从未签到

5

主题

14

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2017-12-7 08:38:06 | 显示全部楼层 |阅读模式
本帖最后由 zzgezi 于 2017-12-9 08:01 编辑

官方驱动库里,spi发送函数是SPI_TransferWait(SPI_Type *pSPI, SPI_WidthType* pRdBuff, SPI_WidthType *pWrBuff,uint32 uiLength)
1111.png
问题1:发送就是把数据写入到SPIx_D寄存器,为什么还要进行一次读操作?在参考手册里,介绍内容也没这么写。
23.png

但我试过,不加读操作,就发送不成功,点不亮我的OLED显示屏。有读操作就正常




问题2:官方驱动库里,没有spi接收函数?在【经验分享】系列找到一个接收函数
222.png
为什么接收完数据还要再发送一次数据?


问题3:我的应用是,我需要发送一帧命令(里面有好几个字节数据),从机收到这些命令后,才会回复给我。不是官方驱动库写的那样,发一字节数据,收一字节数据。

感觉MKE06的spi的通信和其他单片机不太一样,用起来有些困难。还望高手们给指点迷津。谢谢了。


回复

使用道具 举报

该用户从未签到

131

主题

2750

帖子

6468

积分

超级版主

Rank: 8Rank: 8

积分
6468
发表于 7 天前 | 显示全部楼层
楼主你好!不好意思,才看到你的问题,现在回答你的三个问题:
1. SPI_TransferWait 这个函数正如你所打开的那样。
其实就是写数据,写过之后读数据,没毛病。
你要知道SPI的协议,四根线:SCLK,MOSI,MISO,CS.
SCLK主机发送时钟, MOSI,主机数据出,从机数据入。 MISO, 主机数据入,从机数据出。
所以说,你每次写数据到MOSI,然后读是读这个时候MISO上的数据,发送和接收是同时的。
这个就是为什么加上读的数据,当然,如果你不想要接收的,你去掉读取等待也没问题。

2. 请看到,这个是读写函数,也及时先读MISO, 再写到MOSI。
也没问题,当然,如果你要只接收,不发送,那可以去读发送代码。

3. 你可以根据的自己的SPI协议,去取你要的数据,位置搞对就行了。
你可以发送命令的时候,不接受,好几个字节都发送,不加接收代码,等发完之后,再去接收也是可以的。
SPI的通信其实所有单片机几乎都是一样的。
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

14

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 6 天前 | 显示全部楼层
小恩GG 发表于 2017-12-8 13:27
楼主你好!不好意思,才看到你的问题,现在回答你的三个问题:
1. SPI_TransferWait 这个函数正如你所打开 ...

版主,我试过了,在发送函数里不能去掉读操作,否则发送不成功,不成功的意思是,虽然可以用示波器从MOSI总线上观察到数据,但是从机不响应。不知道版主的spi发送函数是怎么写的?是去掉了读操作吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情

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

    [LV.3]偶尔看看II

    85

    主题

    1601

    帖子

    4069

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4069

    优秀版主

    发表于 4 天前 | 显示全部楼层
    zzgezi 发表于 2017-12-9 09:03
    版主,我试过了,在发送函数里不能去掉读操作,否则发送不成功,不成功的意思是,虽然可以用示波器从MOSI ...

    上面说了 写读  反正你不要数据,就都回来又何妨
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

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

    [LV.3]偶尔看看II

    85

    主题

    1601

    帖子

    4069

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4069

    优秀版主

    发表于 4 天前 | 显示全部楼层
    zzgezi 发表于 2017-12-9 09:03
    版主,我试过了,在发送函数里不能去掉读操作,否则发送不成功,不成功的意思是,虽然可以用示波器从MOSI ...

    上面说了 写读  反正你不要数据,就都回来又何妨
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-12-26 20:28
  • 签到天数: 2 天

    [LV.1]初来乍到

    26

    主题

    330

    帖子

    1238

    积分

    金牌会员

    Rank: 6Rank: 6

    积分
    1238
    发表于 4 天前 | 显示全部楼层
    本帖最后由 okwh 于 2017-12-11 15:24 编辑

    SPI是双向通讯,但读写不一定是同时的,看主从的要求。
    通常用的只写、只读分时进行,大概是因为读的是从方收到主写内容后的响应。
    不需要其中之一,也可单一进行。
    采用什么方式常常 根据从机如何需要 和 主机能设置成什么 来确定。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2017-12-15 16:13 , Processed in 0.286836 second(s), 14 queries , Memcache On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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