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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: 小稀

[求助] 关于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预留时间,大佬有时间帮忙解答下疑问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-26 00:24 , Processed in 0.018629 second(s), 6 queries , Gzip On, Redis On.

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