杂6/23

2017年6月23日11:03:11。。。。

一个早上都在搞卫生,想吐槽。。。顺便说一下,安安静静的撸代码这个要求很高吗?很高吗,不高吧。

又被分配的一个新东西,写软件著作权申请,whats the fuck,,,,,什么鬼。。。。。度娘没有你,我感觉我小学生。百度google玩的很溜我觉的也是一项技能。

看了一下,没有什么实质性的东西。嗯,没错,眼前没必要去写,等差不多软件完成。没错,下午的话,有时间的话,想问一下WIFI的本地访问,使用socket去配置WIFI,现在里面的信息都是使用单片机写死的东西,感觉不能这么玩。没错,如果WIFI的socket能够实现和它的AT指令一样的功能的话,那就好了,但是眼前我了解的使用socket好像也只能是一个信息的透传。没办法进行其它的配置....另开一篇文章去了,总算有时间玩一会自己的单片机了



下班了,一天没忙什么正经事情。不过也还算好,总算有点时间看了一会自己喜欢的东西。下班了,过周末。

uint8_t set_pll_fre(double fre) { if(fre<5) { return 0; } //lmx.R46.MASH_EN=1; if(fre<=3550) { lmx.R31.VCO_DISTA_PD=1; //3550频率以下使用分频器,故而关断vco->outa 之间的buf// lmx.R34.CHDIV_EN=1; //输出通道分频器总开关开启// lmx.R47.OUTA_MUX=0; //VCO经过分频器输出// lmx.R35.CHDIV_SEG1_EN=1; lmx.R35.CHDIV_SEG2_EN=1; lmx.R35.CHDIV_SEG3_EN=1; lmx.R30.VCO_2X_EN=0; //VCO输出倍频器关闭// if(fre<=30) //vco 3550-5760// { lmx.R35.CHDIV_SEG1=CHDIV1_3; //输出通道分频器选择// lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_8; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; //分频通道激活个数// plldat.chdiv_total=192; //lmx.R46.MASH_EN=0; } else if(fre<=50) //vco 3840-6400// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_8; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=128; } else if(fre<=70) //vco 4800-6720// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_6; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=96; } else if(fre<=100) //vco 4480-6400// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_4; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=64; } else if(fre<=110)//vco 4800-5280// { lmx.R35.CHDIV_SEG1=CHDIV1_3; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_2; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=48; } else if(fre<=150)//vco 3960-5400// { lmx.R35.CHDIV_SEG1=CHDIV1_3; lmx.R35.CHDIV_SEG2=CHDIV23_6; lmx.R36.CHDIV_SEG3=CHDIV23_2; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=36; } else if(fre<=190)//vco 4800-6080// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_2; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL123; plldat.chdiv_total=32; } else if(fre<=230)//vco 4560-5520/ { lmx.R35.CHDIV_SEG1=CHDIV1_3; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=24; } else if(fre<=300)//vco 3680-4800/ { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_8; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=16; } else if(fre<=460)//vco 3600-5520/ { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_6; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=12; } else if(fre<=610)//vco 3680-4880/ { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_4; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=8; } else if(fre<=930)//vco 3660-5580// { lmx.R35.CHDIV_SEG1=CHDIV1_3; lmx.R35.CHDIV_SEG2=CHDIV23_2; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=6; } else if(fre<=1240)//vco 3720-4960// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_2; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL12; plldat.chdiv_total=4; } else if(fre<=1840)//vco 3720-5520// { lmx.R35.CHDIV_SEG1=CHDIV1_3; lmx.R35.CHDIV_SEG2=CHDIV23_1; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL1; plldat.chdiv_total=3; } else if(fre<=3550)//vco 3680-7100// { lmx.R35.CHDIV_SEG1=CHDIV1_2; lmx.R35.CHDIV_SEG2=CHDIV23_1; lmx.R36.CHDIV_SEG3=CHDIV23_1; lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL1; plldat.chdiv_total=2; } } else if(fre<=7100) { lmx.R31.VCO_DISTA_PD=0; //3550频率以上使用vco输出// lmx.R34.CHDIV_EN=0; //输出通道分频器总开关开启// lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL_PD; //vco输出分频器各阶段失能// lmx.R47.OUTA_MUX=1; //VCO不经过分频器,直接输出// lmx.R35.CHDIV_SEG1_EN=0; //vco输出分频器各阶段失能// lmx.R35.CHDIV_SEG2_EN=0; lmx.R35.CHDIV_SEG3_EN=0; lmx.R30.VCO_2X_EN=0; //VCO输出倍频器关闭// plldat.chdiv_total=1; } else if(fre<10000) { lmx.R31.VCO_DISTA_PD=0; //3550频率以上使用vco输出// lmx.R34.CHDIV_EN=0; //输出通道分频器总开关开启// lmx.R36.CHDIV_SEG_SEL=CHDIV_SEG_SEL_PD; //vco输出分频器各阶段失能// lmx.R47.OUTA_MUX=1; //VCO不经过分频器,直接输出// lmx.R35.CHDIV_SEG1_EN=0; //vco输出分频器各阶段失能// lmx.R35.CHDIV_SEG2_EN=0; lmx.R35.CHDIV_SEG3_EN=0; lmx.R30.VCO_2X_EN=1; //VCO输出倍频器开启// plldat.chdiv_total=0.5; } ////////////////////////////////////////////////////////////////////////////////// //设定PFD频率,OSC=25MHz,PFD默认200MHz// lmx.R9.OSC_2X=1; lmx.R12.PLL_R_PRE=0; lmx.R10.MULT=1; lmx.R11.PLL_R=0; plldat.pfd_fre=50; lmx.R13.PFD_CTL=0;//3; //PFD频率200MHz时,使用Single PFD 模式// ////////////////////////////////////////////////////////////////////////////////// double vcofre; vcofre=fre*plldat.chdiv_total; //计算要达到指定的频率,那么VCO应得到的频率// plldat.vcofre=vcofre; double n; uint16_t N; //需要计算的整数部分分频值,最小值为9// if(lmx.R30.VCO_2X_EN) //如果vco倍频器开启,PLL_N_PRE会强制成为4分频// { lmx.R37.PLL_N_PRE=1; //主动写入一次增加可靠性,(4分频)// plldat.PreN=4; n=2*vcofre/plldat.pfd_fre; if(n<36) { lmx.R9.OSC_2X=0; plldat.pfd_fre=25; n=2*vcofre/plldat.pfd_fre; lmx.R13.PFD_CTL=0; //PFD频率100MHz时,使用Dual PFD模式// } n=n/4; } else { n=vcofre/plldat.pfd_fre; if(n<18) { lmx.R9.OSC_2X=0; plldat.pfd_fre=100; n=vcofre/plldat.pfd_fre; lmx.R13.PFD_CTL=0; //PFD频率100MHz时,使用Dual PFD模式// } lmx.R37.PLL_N_PRE=0; //PLL_N_PRE(2分频)// plldat.PreN=2; n=n/2; } N=(uint16_t)(n); //取得整数部分// lmx.R38.PLL_N=N; plldat.N=N; N_2_MASH_ORDER(N); //根据N值计算可用的mash order及pfd dly// n=n-N; //得到小数部分// uint16_t nume,deno; if(n==0) { nume=0; deno=1; } else { //pll器件小数相关寄存器取16位(65535极值),因此按照60000比例放大在进行化简分数// nume=(uint16_t)round(n*60000); deno=60000; //分子分母一起放大60000倍// simplify_fraction(&nume,&deno); } lmx.R45.REG45=nume; lmx.R44.REG44=0; lmx.R41.REG41=deno; lmx.R40.REG40=0; plldat.nume=nume; plldat.deno=deno; //根据PFD频率修正R0因子// if(plldat.pfd_fre<=20) { lmx.R0.FCAL_HPFD_ADJ=0; if(plldat.pfd_fre<=5) { lmx.R0.FCAL_LPFD_ADJ=3; } else if(plldat.pfd_fre<=10) { lmx.R0.FCAL_LPFD_ADJ=2; } else if(plldat.pfd_fre<=20) { lmx.R0.FCAL_LPFD_ADJ=1; } else { lmx.R0.FCAL_LPFD_ADJ=0; } } else if(plldat.pfd_fre>=100) { lmx.R0.FCAL_LPFD_ADJ=0; if(plldat.pfd_fre>200) { lmx.R0.FCAL_HPFD_ADJ=3; } else if(plldat.pfd_fre>150) { lmx.R0.FCAL_HPFD_ADJ=2; } else if(plldat.pfd_fre>100) { lmx.R0.FCAL_HPFD_ADJ=1; } else { lmx.R0.FCAL_HPFD_ADJ=0; } } else { lmx.R0.FCAL_HPFD_ADJ=0; lmx.R0.FCAL_LPFD_ADJ=0; } if(FOSC<=200) { lmx.R1.CAL_CLK_DIV=0; } else if(FOSC<=400) { lmx.R1.CAL_CLK_DIV=1; } else if(FOSC<=800) { lmx.R1.CAL_CLK_DIV=2; } else { lmx.R1.CAL_CLK_DIV=3; } //lmx.R64.FCAL_FAST=1; //lmx.R64.ACAL_FAST=1; //lmx_wr(64,lmx.R64.REG64); save_lmx_all_reg(); //所有修改写入器件寄存器// lmx.R0.FCAL_EN=1; lmx_wr(0,lmx.R0.REG0); return 1; //lmx.R34.REG34=50160; //lmx_wr(34,lmx.R34.REG34); }这段代码,能否实现参考时钟为25MHZ的前提下,将形参fre设置为100MHZ或者200MHZ,让PLL输出fre频率的信号的功能
最新发布
06-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值