spi片选使能问题???

windriver3 2010-04-13 10:07:40
操作spi通信时,在每次发送数据前都要对spi进行片选使能,为什么不能一次选中,之后进行多次的传输,和硬件特性有关吗???
...全文
2331 25 打赏 收藏 转发到动态 举报
写回复
用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)

21,619

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧