2009年3月31日星期二

getline 函数举例

#include
#include
#include
#include
#include
#include
int main(void)
{
char * line = NULL;
size_t len = 0;
ssize_t read;
printf("here!\n");
while ((read = getline(&line, &len, stdin)) != -1) {
printf("here1!\n");
printf("Retrieved line of length %zu :\n", read);
printf("获取到的字符串是%s\n", line);
printf("len是%d\n", len);
}
if (line)
free(line);
return EXIT_SUCCESS;
}




结果:
here!
mynameisbvcom
here1!
Retrieved line of length 14 :
获取到的字符串是mynameisbvcom

len是120

2009年3月20日星期五

ADF4360---VCO驱动编写

ADF4360特点:ADF4360-8是集成的整数N合成器和压控振荡器(VCO)。ADF4360-8的中心频率由外部电感设置。它允许的频率范围从65MHz400MHz。芯片寄存器通过三线接口控制。设置的工作电源电压的范围是3.0V3.6V,当不使用时可工作于低功耗模式。

  1. 集成了电压控制振荡器(VCO)的宽带时钟合成器,如果和外部环路共同使用来滤除外部参考频率,可以确保分数N和整数N锁相环(PLL)频率合成器的执行。

  2. 其输出频率在1850 MHz 2170 MH之间。

  3. 三线制串行接口

  4. 电压支持3.0 V to 3.6 V

  5. 1.8V逻辑兼容性

  6. 模拟和数字锁定检测

ADF4350应用:
无线基础设施(WCDMATD-SCDMAWiMaxGSMPCSDCSDECT
测试设备 时钟生成
无线LANsCATV设备

VCO:压控振荡器,射频电路的重要组成部分。

RF,设置时钟频率


输出2G时钟代码:

#define TIME 1

#define CLOCK 33

#define DATA 46

#define LE 36


NEXUS_Error rc;


NEXUS_GpioHandle pin;


NEXUS_GpioSettings gpioSettings;


BKNI_EventHandle event;


NEXUS_PlatformSettings platformSettings;


/****************************************************/


/*buf是向寄存器中写入的数据*/


/*len 位长度*/


/****************************************************/


static void


bvcom_vco_write_bit(int v)


{


int b = 0;


int j = 0;




/* prepare enter env */


set_output_gpio(CLOCK, 0);


set_output_gpio(LE,0);


vco_nap();




/* send 24 bits */


for(j = 23; j >= 0; j --){


b = v & (1 <<>


write_bit(b);


printf("\n\n\nthe %d time\n\n\n",j);


}




set_output_gpio(LE,1);


vco_nap(); /*延迟50ns*/


/* end for loop_times */


}




write_bit(b)


{


set_output_gpio(DATA,b);/*set the data*/


printf("bit is 0x%x\n",b);


vco_nap();


set_output_gpio(CLOCK,1);


vco_nap();


set_output_gpio(CLOCK,0);




}






/**************************************************/


/*延迟程序*/


void vco_nap()


{


usleep(TIME);


printf("this is a dalay\n ");


}




/*************************************************/


/*设置gpio*/


/************************************************/


set_output_gpio(int pin_num, int pin_value)


{




gpioSettings.value = pin_value;


pin = NEXUS_Gpio_Open(NEXUS_GpioType_eStandard, pin_num, &gpioSettings);


NEXUS_Gpio_Close(pin);


return(0);


}




main()


{


NEXUS_Platform_GetDefaultSettings(&platformSettings);


platformSettings.openFrontend = false;


NEXUS_Platform_Init(&platformSettings);


BKNI_CreateEvent(&event);




NEXUS_Gpio_GetDefaultSettings(NEXUS_GpioType_eStandard, &gpioSettings);


gpioSettings.mode = NEXUS_GpioMode_eOutputPushPull;


gpioSettings.interruptMode = NEXUS_GpioInterrupt_eDisabled;




/*unsigned char command = 0x55;*/


/* command <<= 5;*/


/* unsigned char *b = 0xaa;*/


set_output_gpio(LE,1);


set_output_gpio(CLOCK,0);


/* while(1){*/


usleep(100);


bvcom_vco_write_bit(0xC9);/*R*/


printf("\n\n**1**\n\n");


usleep(100);


bvcom_vco_write_bit(0x8);/*control*/


printf("\n\n**2**\n\n");


usleep(100);


bvcom_vco_write_bit(0x4E202);/*N*/


printf("\n\n***************starting******************\n\n");


/* }*/




NEXUS_Platform_Uninit();




printf("\n\nmain funcion start\n\n\n");


}