社区
驱动开发/核心开发
帖子详情
spi片选使能问题???
windriver3
2010-04-13 10:07:40
操作spi通信时,在每次发送数据前都要对spi进行片选使能,为什么不能一次选中,之后进行多次的传输,和硬件特性有关吗???
...全文
2360
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)
【嵌入式】STM32实现
SPI
双机通信的一些细节(2)
片选
总结
本文介绍了STM32 STM32F4系列中
SPI
通信的软件和硬件
片选
机制。重点讨论了手册中的示意图误解、理想的硬件
片选
操作、主机软件
片选
的优势以及从机的硬件和软件
片选
应用。通过实例说明了如何初始化
SPI
以实现不同
片选
模式,并指出主机选择软件
片选
便于多从机管理,从机硬件
片选
配合简化配置。
linux
spi
片选
问题
SPI
通信协议允许在一个总线上挂载多个设备,通过
片选
信号(chip select)进行设备选择。每个
SPI
设备对应一个独立的
片选
GPIO引脚,其chip_select成员指定相应的
片选
引脚ID。在执行
SPI
传输时,明确设置chip_select至关重要,否则可能导致通信失败。了解并正确使用
片选
机制是确保
SPI
设备间有效通信的基础。
SPI
片选
踩坑实录(硬件
片选
和软件
片选
)
本文介绍了
SPI
通信中
片选
信号的作用及基本原理,包括有效电平和控制方式。重点对比了硬件
片选
与软件
片选
的优缺点,并通过实际测试案例说明在某些场景下使用GPIO控制
片选
更为可靠和灵活。
SPI
设备与多从机冲突的解决之道:
片选
管理、CS 去抖与总线隔离策略
本文深入探讨了
SPI
多从机通信中常见的
片选
冲突、信号抖动和总线干扰
问题
,并提供了详细的解决方案。涵盖了
片选
管理、硬件去抖、三态缓冲器隔离、动态调度策略以及不同MCU平台的适配技巧。文章还介绍了调试工具的应用,如示波器和逻辑分析仪,帮助开发者快速定位并解决
SPI
通信中的各种
问题
。
SPI
多从机架构设计:从硬件
片选
到软件状态机的实战思考
本文围绕STM32平台下的
SPI
一主多从架构展开,重点阐述硬件
片选
与软件模拟
片选
的权衡策略、总线冲突的软硬协同防护机制、基于多因子评估的动态优先级调度算法、非阻塞式
SPI
状态机设计,以及吞吐量提升与功耗降低的综合性能优化方法。涵盖实时监控、自适应超时、差分更新等关键技术实践。
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章