程序与技术分享:CDCE913产生任意频率

简介: 程序与技术分享:CDCE913产生任意频率

1,上TI官网下载CDCE913的datasheet和配置软件clock Pro。如果只需要配//代码效果参考:http://www.lyjsj.net.cn/wx/art_24201.html

置CDCE913成某一个固定频率,那么用clock Pro可以很方便快捷。

TI的初衷应该就是通过I2C配置几个频率,然后写入到EEPROM中,不然没有必要设计EEPROM和频率选择PIN(S1,S2)。


该软件产生的配置文件是二进制的csv或者txt文档,导入到Excel中处理成16进制即可。或者直接手动填写,反正也就20来个寄存器。


2,如需要在程序运行过程中动态的配置成不同的频率,那么你需要通过I2C接口配置。CDCE913的器件地址如下:


#define CDCE_ADDRESS 0x65


#define SLAVE_WRITE CDCE_ADDRESS[1


#define SLAVE_READ ((CDCE_ADDRESS[1) | 0x01)


3,了解一下配置原理


可以看到Y1,Y2,Y3都可以从PLL1配置,然后进过M(M1,M2,M3),Pdiv出来。寄存器配置完成后,需要拉高S0,才能使能输出。


4,查看datasheet,配置PLL需要配置以下参数


计算方法如下:


公式略微有点复杂。下面代码以配置Y1输出为例(输入晶振频率为8MHz,平台为STM32,I2C为软件模拟)。


#define CLK_IN 8


void CDCE_Init(uint16_t f_out)


{


uint8_t read_back;


uint8_t i = 1;


AckTypeDef ack;


uint32_t M, N, Pdiv, Q, R;


uint8_t reg18, reg19, reg1A, reg1B;


int P;


uint16_t f_vco = f_out;


bool result = false;


uint8_t f_range;


while (f_vco < 80)


{


i++;


f_vco = f_out i;


}


while (f_vco < 231)


{


for (N = 4095; N > 0; N--)


{


for (M = 511; M > 0; M--)


{


if ((N CLK_IN / M) == f_vco)


//代码效果参考:http://www.lyjsj.net.cn/wz/art_24199.html

{

{


result = true;


break;


}


}


}


if (result)


{


break;


}


}


if (result)


{


break;


}


else


{


i++;


f_vco = f_out i;


}


}


if (!result)


{


UserPrintf("Error:unsupport pclk\n");


return;


}


P = 4 - (int)((log((double)N / (double)M))/log(2));


if (P < 0)


{


P = 0;


}


Q = (int)((double)N pow(2, (double)P) / (double)M);


R = (double)N pow(2, (double)P) - M Q;


if (f_vco < 125)


{


f_range = 0;


}


else if ((f_vco >= 125) && (f_vco < 150))


{


f_range = 1;


}


else if ((f_vco >= 150) && (f_vco < 175))


{


f_range = 2;


}


else


{


f_range = 3;


}


S0 = 0;


ack = CDCE_Read8bit(0x00, 1, &read_back);


if (ack != I2C_ACK)


{


UserPrintf("Error:clk configuration failed , maybe no pullup res\n");


return;


}


if (read_back != CDCE_ID)


{


UserPrintf("Error:clk device ID error\n");


return;


}


Pdiv = f_vco / f_out;


UserPrintf("M:%d,N:%d,Pdiv:%d,f_vco:%d,P:%d,Q:%d,R:%d\n", M, N, Pdiv,f_vco,P,Q, R);


CDCE_WriteByte(0x02, 0xB4);


CDCE_WriteByte(0x03, (uint8_t)Pdiv);


CDCE_WriteByte(0x04, 0x02);


CDCE_WriteByte(0x05, 0x00);


CDCE_WriteByte(0x06, 0x40);


CDCE_WriteByte(0x12, 0x00);


CDCE_WriteByte(0x13, 0x01);


CDCE_WriteByte(0x14, 0x6D);


CDCE_WriteByte(0x15, 0x02);


CDCE_WriteByte(0x16, 0);


CDCE_WriteByte(0x17, 0);


reg18 = (N ] 4) & 0xFFF;


reg19 = (N & 0xf) [ 4 | (R & 0xf0) ] 5;


reg1A = (R & 0x1f) [ 3 | ((Q ] 3) & 0x7);


//代码效果参考:http://www.lyjsj.net.cn/wx/art_24197.html

reg1B = (Q & 0x7) [ 5 | (P & 0x07) [ 2 | (f_range & 0x03);

CDCE_WriteByte(0x18, reg18);


CDCE_WriteByte(0x19, reg19);


CDCE_WriteByte(0x1A, reg1A);


CDCE_WriteByte(0x1B, reg1B);


CDCE_WriteByte(0x1C, N);


CDCE_WriteByte(0x1D, ((N & 0xf) [ 4) | (R & 0xf0));


CDCE_WriteByte(0x1E, (R & 0x0f) | (Q & 0xf0));


CDCE_WriteByte(0x1F, ((Q & 0x07) [ 5) | ((P & 0x07) [ 2) | (f_range & 0x03));


S0 = 1;


UserPrintf("Info:clk well configured\n");


}

相关文章
|
7月前
|
机器学习/深度学习 算法 安全
内容过滤算法:构建数字世界的守护者
内容过滤算法:构建数字世界的守护者
第二章:LTI连续系统
第二章:LTI连续系统
70 0
|
2月前
|
存储 前端开发 NoSQL
拿下奇怪的前端报错(四):1比特丢失导致的音视频播放时长无限增长-浅析http分片传输核心和一个坑点
在一个使用MongoDB GridFS存储文件的项目中,音频和视频文件在大部分设备上播放时长显示为无限,而单独播放则正常。经调查发现,问题源于HTTP Range请求的处理不当,导致最后一个字节未被正确返回。通过调整请求参数,使JavaScript/MongoDB的操作范围与HTTP Range一致,最终解决了这一问题。此案例强调了对HTTP协议深入理解及跨系统集成时注意细节的重要性。
|
5月前
|
并行计算 监控 Serverless
函数计算操作报错合集之出现了设备不匹配的问题,该如何解决
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
文本,学习方法,必须做,快的学习方法,统计汇总写法,比如你要构思一个数学库,需要写一个汇总,主动获取标题统计,主动生成文章跳转链接,然后将它打入文章资料当中:
文本,学习方法,必须做,快的学习方法,统计汇总写法,比如你要构思一个数学库,需要写一个汇总,主动获取标题统计,主动生成文章跳转链接,然后将它打入文章资料当中:
|
5月前
|
Serverless 网络安全 API
函数计算产品使用问题之遇到无法处理艺术字请求,该怎么办
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
运维 前端开发 安全
万字长文搞懂产品模式和项目模式
万字长文搞懂产品模式和项目模式
185 0
|
7月前
春晚刘谦第二个魔术原理讲解
春晚刘谦第二个魔术原理讲解
57 2
|
7月前
|
算法
算法编程(二十九):统计一致字符串的数目
算法编程(二十九):统计一致字符串的数目
84 0
|
前端开发 芯片
【芯片前端】“异步FIFO全解析”的BUG——格雷码连续性
【芯片前端】“异步FIFO全解析”的BUG——格雷码连续性
140 1