在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
楼主: 小稀

[求助] 关于spi cpol 和 cpha 四种模式

[复制链接]
发表于 2017-12-18 08:22:37 | 显示全部楼层
回复 10# 小稀


   spi的速率是很低的,以一个高频去采样他的边沿,同时采样数据
回复 支持 反对

使用道具 举报

发表于 2017-12-18 15:18:18 | 显示全部楼层
回复 9# 小稀


我推想了一下, 這可能是您的問題所在: 作爲Slave, 當最後一個SCK收到bit後, 所有的數據都在移位寄存器裡, 但仍差了一拍把這筆data寫入FIFO. 我的理解正確嗎?
假如是如此, 可能會建議你把移位寄存器, 在 "操作" 上當成FIFO的一部分. 實際上的作法可能類似如下:
1. 假如FIFO內有資料, 取完FIFO後的資料之後, 再讀shift register
2. 假如FIFO內無資料, 直接讀shift register.
3. 假設FIFO深度為N, 那麼最大容許的讀取量應該是N+1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-18 17:18:53 | 显示全部楼层
回复 12# hyperpicc


   虽然不太理解你说的那三点的意思 不过我也从你的建议想出了解决办法我利用第八个sck 本来这个时钟是用来接收第八个bit的  我直接用这个时钟来写数
数据用寄存器和master来的数据拼接写进ram里面

接下来可能就是fifo controller 的问题了
异步的fifo 每次来一个写脉冲后
写count会默认加一
然后controller会用写时钟拍一下  然后再把这个寄存的count转换成格雷码 等待读时钟来取数 判断rempty信号
问题又来了
我上面是在第八个sck造出一个脉冲写fifo 数据是在脉冲后的上升沿写到ram里面 这时候已经没有了sck (就是写时钟)controller寄存新的count
就因为controller没有寄存下最后这一个新count
导致地址没加
所以最后的一个byte的数据读出来是不对的
回复 支持 反对

使用道具 举报

发表于 2022-11-3 16:35:39 | 显示全部楼层


   
hyperpicc 发表于 2017-12-15 13:29
1. 實作SPI Master/Slave最基礎的方式是, 有一個內部的clock; 作為Master的時候, SCK是由這個clock除頻而得 ...


大佬好,有个问题不太理解,SPI slave使用内部clock sample输入的SCK来进行发送数据这种方式,为什么最快的SPI频率可以是内部clock的一半?内部clock同步边沿就不要三个周期吧,而且还要给master采样MISO预留时间,大佬有时间帮忙解答下疑问
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

X

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-7-11 22:26 , Processed in 0.107993 second(s), 6 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表