FM1288可以采用多种方式下载配置参数,我选用的是通过I2C下载。
一、数据格式
如图所示:
每一个设置参数都有固定格式: 0XFCF3 + 0X3B +0X1E34 +0X008B
蓝色参数表示 :写动作 ; 红色参数表示 :写入的地址 ;绿色参数表示:写入的值
以上是每个配置参数的格式,然后还有一次写入的格式
必须以 0XFCF3 + 0X3B +0X1E34 +0X008B 开头;以 0XFCF3 + 0X3B +0X22FB +0X0000结尾。
如果想要读等操作可以对照下图
二、 代码例程
void FM1288_I2C_Init(void) //初始化I2C
{
uint8_t uwDelay;
GLB->SD_PUL_DN = 0;
//!<1: Sensor data bus pull-down resister (65k) enable
GLB->I2C_FUNC_DIS = 0;
GLB->SF_FUNC_DIS = 0;
I2C_Init(I2C_2,Master,I2C_STDSPEED,0x60,NULL); // 400kb/s 0x60=( oxco>>0x01 )
Delay ( 2000);
FM1288_WRIdata();
}
void FM1288_WRIdata(void) // 写入数据
{
uint32_t ulAdr,uwDelay;
uint8_t ubBuf[7];
uint16_t uADOCode[]=
{
0x1E34, 0x008B,
0x22F2, 0x0034,
......... //省略一堆参数
0x22F8, 0x8002,
0x22F9, 0x007F,
0x22FA, 0x003F,
0x22fb,0x0000, //----end
0xffff,0xffff//----判断停止发送
}
ubBuf[0] = 0xfcf3>>8;
ubBuf[1] = 0xfcf3&0x00ff;
ubBuf[2] = 0x3b;
ulAdr=0;
Delay( 1000);
while(1)
{
ubBuf[3]=uADOCode[ulAdr]>>8;
ubBuf[4]=uADOCode[ulAdr]&0x00ff;
ubBuf[5]=uADOCode[(ulAdr+1)]>>8;
ubBuf[6]=uADOCode[(ulAdr+1)]&0x00ff;
if(ubBuf[3]==0xff)
{
break;
}
else
{
I2C_Write(I2C_2,ubBuf,7);
ulAdr+=2;
}
}
}