找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 429|回复: 10
打印 上一主题 下一主题
收起左侧

帮忙看看这个芯片的时序如何写

[复制链接]
跳转到指定楼层
楼主
ID:76027 发表于 2024-2-8 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手,帮忙看看这个芯片和单片机通信的时序如何写。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:230500 发表于 2024-2-9 00:21 | 只看该作者
SI是数据传输口;CPS 是同步时钟; CPS低电平时数据才有效,
那现在说说如何操作; 初始化;把RST=1.CPS=1;SI无所谓;默认置0吧; 开始写数据:RST=0;SI=要传输的数据,低位先传;数据准备好后,CPS=0;数据就传出去了;然后CPS=1;SI=下一个要传输的位;(不要搞错了,这里是一次传输21位);
嗯,看图大概就是这样;具体要接上电路实验看看;如果怀疑时序有误就接上逻辑分析仪看看
回复

使用道具 举报

板凳
ID:69038 发表于 2024-2-9 01:56 | 只看该作者
一句话:RST的低电平期间,CPS的下跳变边沿时,把SI的电平读入到芯片,且SI的信号低位(LSB)在前
回复

使用道具 举报

地板
ID:69038 发表于 2024-2-9 10:16 | 只看该作者
RST=1;
RST=0;
for(i=0;i<21;i++)
{
   si=(bit)(dat & 0x01);
   si>>=1;
   cps=1;
   //delay(1);
  cps=0;
   //delay(0)
}
cps=1;
RST=1;

回复

使用道具 举报

5#
ID:1079566 发表于 2024-2-9 10:25 | 只看该作者
zhuls 发表于 2024-2-9 10:16
RST=1;
RST=0;
for(i=0;i>=1;


   si>>=1;
是不是要改成:
   dat>>=1;
回复

使用道具 举报

6#
ID:535881 发表于 2024-2-9 10:42 | 只看该作者
弱弱的问一句D21不是高位吗,这不是高位先传吗,还有D0位是IGNORED,但应该也要传吧,不然不是完整的时序
回复

使用道具 举报

7#
ID:69038 发表于 2024-2-9 11:00 | 只看该作者
ZSJM 发表于 2024-2-9 10:25
si>>=1;
是不是要改成:
   dat>>=1;

是的~手机打字不容易,误了
回复

使用道具 举报

8#
ID:76027 发表于 2024-2-10 17:54 | 只看该作者
没搞定,现传上完整的PDF文件,帮忙看看。祝各位新春快乐。

M54959P.pdf

186.02 KB, 下载次数: 11

回复

使用道具 举报

9#
ID:535881 发表于 2024-2-10 21:15 | 只看该作者
楼主没搞定是怎么写的时序呢?
我看时序图应该是高位先传,试试我这个呢。
char i;
RST=1;
RST=0;
for(i=21;i>=0;i--)
{
    CPS=1;
    SI=(bit)(data & (0x01<<i));
    //delay();
    CPS=0;
    //delay();
}
CPS=1;
RST=1;
回复

使用道具 举报

10#
ID:76027 发表于 2024-2-11 07:57 | 只看该作者
#include <STC89C5xRC.H>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

void calc();
void pll(unsigned long);
                                                                                                                                                                                                        
ulong rcdata,nadata,sun,kill;

sbit dt=P2^2;
sbit ck=P2^1;
sbit en=P2^0;

void calc()
{
     uchar a,fr;  /*VC0输出频率=403.700MHz*/
     uint n,r;
     r=2560;
     n=630;
     a=100;
     fr=1;//基准频率5KHz,PLL RX状态,d1=l;d2=l;d3=l;d4=h;
     rcdata=fr;
     rcdata=rcdata<<14;
     rcdata=rcdata+r;
     rcdata=rcdata<<1;
     rcdata=rcdata+1;
  nadata=n;
  nadata=nadata<<7;
  nadata=nadata+a;
  nadata=nadata<<1;
}

void pll (ulong kill)/*msb first*/
{
    uchar i;
                //sun=0x100000;
    en=1;
                en=0;
          
        for(i=21;i>=0;i--)
        {
                                ck=1;
        dt=(bit)(kill & ( 0x01<<i));
       //delay();
                                ck=0;
                        //delay();
    }
        ck=1;
        en=1;
       
}
void main(void)

{
while(1)
  {
  en=1;
  ck=1;
  dt=0;

         calc();
         pll(rcdata);  
         pll(nadata);
  }
}
回复

使用道具 举报

11#
ID:76027 发表于 2024-2-11 07:59 | 只看该作者
fvco : output frequency of external voltage controlled oscillator (vco)
n   : preset divide ratio of binary 10-bit programmable counter (3 to 2,047)
a   : preset divide ratio of binary 7-bit swallow counter (0=<a=<127)
fosc : output frequency of the reference frequency oscillator
r   : preset divide ratio of binary 14-bit programmable reference counter (3 to 16,383)
m   : preset divide ratio of the dual modulus prescaler (64 or 128)

cnt : programmable counter data setting (l) & programmable reference counter data setting (h)
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表