社区
驱动开发/核心开发
帖子详情
spi片选使能问题???
windriver3
2010-04-13 10:07:40
操作spi通信时,在每次发送数据前都要对spi进行片选使能,为什么不能一次选中,之后进行多次的传输,和硬件特性有关吗???
...全文
2331
25
打赏
收藏
spi片选使能问题???
操作spi通信时,在每次发送数据前都要对spi进行片选使能,为什么不能一次选中,之后进行多次的传输,和硬件特性有关吗???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
windriver3
2010-04-14
打赏
举报
回复
[Quote=引用 23 楼 kevinyujm 的回复:]
引用 22 楼 windriver3 的回复:
引用 21 楼 kevinyujm 的回复:
引用 20 楼 windriver3 的回复:
引用 18 楼 kevinyujm 的回复:
ps:
1. 不片选是绝对不行的
。。。
接收端不是我弄的,所以在这里找原因,你说的就是我前面问的,感觉你没看我前面在问什么,我这端得资料没有特殊说明,从端的没看过,spi相关standa……
[/Quote]找到原因,硬件不支持连续的传输,必须在每次传输时,使能一下。这个设计有点弱啊。
gelu1040
2010-04-13
打赏
举报
回复
2楼以前如果有片选一直有效的经验,那么可以推论:#2 以前的对SPI的操作只有第一次得到正确的结果
gelu1040
2010-04-13
打赏
举报
回复
规定的
任何一个操作开始于片选有效,终止于片选无效.
如果你发一个读指令,读完之后不另片选无效,设备会一直发数据给你,读过程无法结束.
那么,你后续的任何操作都是是非法的
和硬件无关,和SPI协议有关
qinshi1208
2010-04-13
打赏
举报
回复
以前用SPIFLASH的经验,还是每次都选择的好
bluepei28
2010-04-13
打赏
举报
回复
SPI有硬件的,也有软件模拟的。
可以一次片选使能,多次传输数据。
但是为了通讯安全起见,还是发送一帧数据的时候进行片选使能。发送完毕的时候,片选使不能。
yangb2014#
2010-04-13
打赏
举报
回复
应该可以按页传输吧,比如一次16/32个字节,
kevinyujm
2010-04-13
打赏
举报
回复
[Quote=引用 22 楼 windriver3 的回复:]
引用 21 楼 kevinyujm 的回复:
引用 20 楼 windriver3 的回复:
引用 18 楼 kevinyujm 的回复:
ps:
1. 不片选是绝对不行的
。。。
接收端不是我弄的,所以在这里找原因,你说的就是我前面问的,感觉你没看我前面在问什么,我这端得资料没有特殊说明,从端的没看过,spi相关standard没找到,wk的都太泛泛了。
[/Quote]
我当然完整看过你的问题了。
问题是,这个东西必须是两方的事。
要么你和另一方沟通好,两个人合作调试。
要么你自己在这边模拟接受方的行为,调试看看,如果证明没有问题,你不就可以直接找另一方了吗。
否则,瞎猜也没办法啊。
现在只是说SPI通讯问题,又不牵涉到其他,你写了发送程序,写接收程序不是个难事吧。
另外,我不知道你现在在什么平台开发程序,如果是单片机嵌入式的,竟然没有这块MCU的spec?不可能吧。有的话就会有一章专门介绍SPI interface啊,里面就有主/从端的说明啊。如果没有特殊说明,那就是没有什么特殊的呗,按照平常操作就行啊,出了问题,示波器调啊。另外,两套板子还是有的吧,这样不就齐了。
别人讲的再多,不如自己过手一遍,特别是涉及硬件的东西。
windriver3
2010-04-13
打赏
举报
回复
[Quote=引用 21 楼 kevinyujm 的回复:]
引用 20 楼 windriver3 的回复:
引用 18 楼 kevinyujm 的回复:
ps:
1. 不片选是绝对不行的
2. 片选是耗电的
3. 协议规定,数据开始要使能片选,数据结束要禁止片选。一次N个数据的问题,你可以仔细看看IC资料,加上用我上面说的方法来调试。
数据开始这里是指什么,是一次传输一个8位就是一个开始一个结束,还是我要发很多字节,开始是第一个字节,结束……
[/Quote]接收端不是我弄的,所以在这里找原因,你说的就是我前面问的,感觉你没看我前面在问什么,我这端得资料没有特殊说明,从端的没看过,spi相关standard没找到,wk的都太泛泛了。
kevinyujm
2010-04-13
打赏
举报
回复
[Quote=引用 20 楼 windriver3 的回复:]
引用 18 楼 kevinyujm 的回复:
ps:
1. 不片选是绝对不行的
2. 片选是耗电的
3. 协议规定,数据开始要使能片选,数据结束要禁止片选。一次N个数据的问题,你可以仔细看看IC资料,加上用我上面说的方法来调试。
数据开始这里是指什么,是一次传输一个8位就是一个开始一个结束,还是我要发很多字节,开始是第一个字节,结束是最后一个。
[/Quote]
ChipSelect -> send N bytes -> ChipDeselct,要不然SPI搞个FIFO干嘛,不就是让你一次发多个,快速发送。但是你要查看接收端的接受能力及设置。不同的IC对SPI的实现有细微差别,特别是接收端(即工作在slave模式下)。你要好好看资料,并配合示波器调试。
windriver3
2010-04-13
打赏
举报
回复
[Quote=引用 18 楼 kevinyujm 的回复:]
ps:
1. 不片选是绝对不行的
2. 片选是耗电的
3. 协议规定,数据开始要使能片选,数据结束要禁止片选。一次N个数据的问题,你可以仔细看看IC资料,加上用我上面说的方法来调试。
[/Quote]数据开始这里是指什么,是一次传输一个8位就是一个开始一个结束,还是我要发很多字节,开始是第一个字节,结束是最后一个。
kevinyujm
2010-04-13
打赏
举报
回复
再者,
注意master和slave模式的区别,具体请看IC资料说明。
kevinyujm
2010-04-13
打赏
举报
回复
ps:
1. 不片选是绝对不行的
2. 片选是耗电的
3. 协议规定,数据开始要使能片选,数据结束要禁止片选。一次N个数据的问题,你可以仔细看看IC资料,加上用我上面说的方法来调试。
kevinyujm
2010-04-13
打赏
举报
回复
用示波器看data线,以确定你的数据发出去没有。
另外,很多IC的SPI接口都支持self-test模式,就是自己发自己收,你可以把发送和接受的程序都写了,试试看。
windriver3
2010-04-13
打赏
举报
回复
[Quote=引用 15 楼 bluepei28 的回复:]
问题明确了:
双方的通讯协议没有明确。
你应该联系接收方的开发工程师,看是怎么处理的。
如果人家设计的是片选一次只接收一字节,你弄死也传不过去两字节。
[/Quote]问题是他那边也不知道是什么原因,不片选试了一下不行,加上片选ok了,就先这么用着了,现在想查一下原因,对方也是想一次片选多次接收的,不过我是真不知道他那边是怎么设置的。不知道有什么设置和这个相关。
bluepei28
2010-04-13
打赏
举报
回复
问题明确了:
双方的通讯协议没有明确。
你应该联系接收方的开发工程师,看是怎么处理的。
如果人家设计的是片选一次只接收一字节,你弄死也传不过去两字节。
windriver3
2010-04-13
打赏
举报
回复
[Quote=引用 13 楼 bluepei28 的回复:]
那还是要看接收方的处理。
比如说,接收到了一字节是否转移此数据。是否清空相关寄存器,标志位好再接收。
[/Quote那边是中断接收,应该不会出现这种问题,接收端不是我弄的,具体不太清楚。
如果说是没准备好的话,我这边加大延时应该可以,但还是不可以的,必须重新片选使能。
bluepei28
2010-04-13
打赏
举报
回复
那还是要看接收方的处理。
比如说,接收到了一字节是否转移此数据。是否清空相关寄存器,标志位好再接收。
windriver3
2010-04-13
打赏
举报
回复
[Quote=引用 11 楼 bluepei28 的回复:]
通讯是双方的事情,
要看接收方是怎么处理数据的。
如果它接收到一字节马上处理,需要花费一段时间,那么你连续传的第二字节可能就出问题了。
所以,你得看看接收方是怎么处理接收到得数据。
我有一次片选,传输多字节的项目经验。
[/Quote]不是处理不过来的问题,是收不到的问题。每次发送都要伴随一次使能操作。
bluepei28
2010-04-13
打赏
举报
回复
通讯是双方的事情,
要看接收方是怎么处理数据的。
如果它接收到一字节马上处理,需要花费一段时间,那么你连续传的第二字节可能就出问题了。
所以,你得看看接收方是怎么处理接收到得数据。
我有一次片选,传输多字节的项目经验。
windriver3
2010-04-13
打赏
举报
回复
硬件,一个dsp
加载更多回复(5)
再学
SPI
——(一)
SPI
片选
信号
1. 简述 前面也就
SPI
的通信进行过基础的学习,针对的是标准 4 线的
SPI
,近期因为芯片资源有限,不得不使用一根
片选
CS 去控制两个
SPI
从设备,在这个过程中,也重新对
SPI
的通信细节有了进一步的了解与认识,还是觉得有必要记录下来,以供查询和学习,也是对
SPI
通信协议的进一步理解。 几篇以前的博客 STM32硬件
SPI
驱动0.96寸的OLED 51 软件模拟
SPI
驱动O...
SPI
片选
踩坑实录(硬件
片选
和软件
片选
)
SPI
(Serial Peripheral Interface,串行外设接口)的
片选
信号(Chip Select,简称 CS 或 SS,即 Slave Select)是
SPI
通信中用于选择从设备的关键控制信号,其作用是在多从设备的
SPI
总线上,指定当前与主设备进行通信的从设备。
linux
spi
片选
问题
spi
通过
片选
信号来支持一个
spi
总线上支持挂载多个
spi
设备。 具体实现就是通过一个
spi
设备对应一个
片选
gpio引脚,
spi
_device的chip_select成员即对应的
片选
引脚id。 在设置
spi
传输是需要显性的设置chip_select,否则可能出现无法通信的
问题
......
【嵌入式】STM32实现
SPI
双机通信的一些细节(2)
片选
总结
STM32实现
SPI
双机通信的一些细节(2)
片选
总结
SPI
片选
总结坑爹的主从机通信构思
SPI
片选
总结 虽然说一主一从好像和
片选
没什么关系但是不搞清楚总觉得心里发慌,但是不搞不知道,一搞折腾了我好几天。目前我接触到的很多示例代码包括正点原子的教学视频中,对于软件
片选
的选择显得理所当然,几乎没有设置为硬件
片选
的情况。《STM32中文参考手册》中关于软硬件
片选
讲的很混乱,看了好几遍也摸不着头脑。下面我...
spi
通信单个从机的
片选
信号
问题
在
SPI
通信中,可以有一个主机和多个从机,一般情况每个从机都有一个
片选
信号,
片选
信号默认为高,主机通过拉低
片选
信号来选中对应从机进行通信,但是实际情况很多时候只有一个从机,一开始会认为这时候的
片选
信号没多大意义,实际上即使只有一个从机,也必须只在通信时(发送或接收数据包)将
片选
信号(CS)拉低,并在通信结束将其拉高。绝对不应该持续拉低
片选
信号。所以即使在只有一个从机的情况下,也必须只在每次数据传输开始的时候将 CS 信号拉低,并在传输结束后将其拉高。
驱动开发/核心开发
21,619
社区成员
21,708
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章