linux用户层下通过i2c配置Si5395

I2C写Si5395
写page 例 0x01FF FF(page addr)
写addr + value 例 0xAABB AA(addr) BB(value)

#include<stdio.h>
#include<linux/types.h>
#include<fcntl.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/ioctl.h>
#include<errno.h>
#include<assert.h>
#include<string.h>
#include<linux/i2c.h>
#include<linux/i2c-dev.h>
#include<unistd.h>

#define I2C_DEV             "/dev/i2c-0"
#define I2C_SI5395    0x69

typedef struct _i2c_si5395_reg {
    unsigned int reg_addr;
    unsigned char reg_value;
}i2c_si5395_reg_t;


i2c_si5395_reg_t i2c_si5395_reg_value0[] =
{
    {0x0B24, 0xC0},
    {0x0B25, 0x00},
    {0x0540, 0x01}
};

i2c_si5395_reg_t i2c_si5395_reg_value1[] =
{
    {0x0006, 0x00},
    {0x0007, 0x00},
    {0x0008, 0x00},
    {0x000B, 0x68},
    {0x0016, 0x02},
    {0x0017, 0xDC},
    {0x0018, 0xCC},
    {0x0019, 0xDD},
    {0x001A, 0xDF},
    {0x002B, 0x02},
    {0x002C, 0x03},
    {0x002D, 0x00},
    {0x002E, 0x48},
    {0x002F, 0x00},
    {0x0030, 0x48},
    {0x0031, 0x00},
    {0x0032, 0x00},
    {0x0033, 0x00},
    {0x0034, 0x00},
    {0x0035, 0x00},
    {0x0036, 0x02},
    {0x0037, 0x00},
    {0x0038, 0x02},
    {0x0039, 0x00},
    {0x003A, 0x00},
    {0x003B, 0x00},
    {0x003C, 0x00},
    {0x003D, 0x00},
    {0x003E, 0x30},
    {0x003F, 0x33},
    {0x0040, 0x04},
    {0x0041, 0x0D},
    {0x0042, 0x0E},
    {0x0043, 0x00},
    {0x0044, 0x00},
    {0x0045, 0x0C},
    {0x0046, 0x32},
    {0x0047, 0x32},
    {0x0048, 0x00},
    {0x0049, 0x00},
    {0x004A, 0x32},
    {0x004B, 0x32},
    {0x004C, 0x00},
    {0x004D, 0x00},
    {0x004E, 0x55},
    {0x004F, 0x00},
    {0x0050, 0x0F},
    {0x0051, 0x03},
    {0x0052, 0x03},
    {0x0053, 0x00},
    {0x0054, 0x00},
    {0x0055, 0x03},
    {0x0056, 0x03},
    {0x0057, 0x00},
    {0x0058, 0x00},
    {0x0059, 0x05},
    {0x005A, 0x55},
    {0x005B, 0x55},
    {0x005C, 0x4D},
    {0x005D, 0x01},
    {0x005E, 0x55},
    {0x005F, 0x55},
    {0x0060, 0xD0},
    {0x0061, 0x00},
    {0x0062, 0x00},
    {0x0063, 0x00},
    {0x0064, 0x00},
    {0x0065, 0x00},
    {0x0066, 0x00},
    {0x0067, 0x00},
    {0x0068, 0x00},
    {0x0069, 0x00},
    {0x0092, 0x02},
    {0x0093, 0x90},
    {0x0095, 0x00},
    {0x0096, 0x80},
    {0x0098, 0x60},
    {0x009A, 0x02},
    {0x009B, 0x50},
    {0x009D, 0x00},
    {0x009E, 0x40},
    {0x00A0, 0x20},
    {0x00A2, 0x00},
    {0x00A9, 0xCE},
    {0x00AA, 0x31},
    {0x00AB, 0x00},
    {0x00AC, 0x00},
    {0x00E5, 0x00},
    {0x00EA, 0x05},
    {0x00EB, 0x30},
    {0x00EC, 0x00},
    {0x00ED, 0x00},
    {0x0102, 0x01},
    {0x0103, 0x02},
    {0x0104, 0x09},
    {0x0105, 0x3B},
    {0x0106, 0x28},
    {0x0108, 0x02},
    {0x0109, 0x09},
    {0x010A, 0x3B},
    {0x010B, 0x28},
    {0x010D, 0x02},
    {0x010E, 0x09},
    {0x010F, 0x3B},
    {0x0110, 0x28},
    {0x0112, 0x02},
    {0x0113, 0x09},
    {0x0114, 0x3B},
    {0x0115, 0x28},
    {0x0117, 0x02},
    {0x0118, 0x09},
    {0x0119, 0x3B},
    {0x011A, 0x28},
    {0x011C, 0x02},
    {0x011D, 0x09},
    {0x011E, 0x3B},
    {0x011F, 0x28},
    {0x0121, 0x02},
    {0x0122, 0x09},
    {0x0123, 0x3B},
    {0x0124, 0x28},
    {0x0126, 0x02},
    {0x0127, 0x09},
    {0x0128, 0x3B},
    {0x0129, 0x28},
    {0x012B, 0x02},
    {0x012C, 0x09},
    {0x012D, 0x3B},
    {0x012E, 0x28},
    {0x0130, 0x02},
    {0x0131, 0x09},
    {0x0132, 0x3B},
    {0x0133, 0x28},
    {0x0135, 0x01},
    {0x0136, 0x09},
    {0x0137, 0x3B},
    {0x0138, 0x28},
    {0x013A, 0x01},
    {0x013B, 0x09},
    {0x013C, 0x3B},
    {0x013D, 0x28},
    {0x013F, 0x00},
    {0x0140, 0x00},
    {0x0141, 0x40},
    {0x0142, 0xFF},
    {0x0206, 0x00},
    {0x0208, 0x50},
    {0x0209, 0x00},
    {0x020A, 0x00},
    {0x020B, 0x00},
    {0x020C, 0x00},
    {0x020D, 0x00},
    {0x020E, 0x01},
    {0x020F, 0x00},
    {0x0210, 0x00},
    {0x0211, 0x00},
    {0x0212, 0x64},
    {0x0213, 0x00},
    {0x0214, 0x00},
    {0x0215, 0x00},
    {0x0216, 0x00},
    {0x0217, 0x00},
    {0x0218, 0x01},
    {0x0219, 0x00},
    {0x021A, 0x00},
    {0x021B, 0x00},
    {0x021C, 0x00},
    {0x021D, 0x00},
    {0x021E, 0x00},
    {0x021F, 0x00},
    {0x0220, 0x00},
    {0x0221, 0x00},
    {0x0222, 0x00},
    {0x0223, 0x00},
    {0x0224, 0x00},
    {0x0225, 0x00},
    {0x0226, 0x00},
    {0x0227, 0x00},
    {0x0228, 0x00},
    {0x0229, 0x00},
    {0x022A, 0x00},
    {0x022B, 0x00},
    {0x022C, 0x00},
    {0x022D, 0x00},
    {0x022E, 0x00},
    {0x022F, 0x00},
    {0x0231, 0x0B},
    {0x0232, 0x0B},
    {0x0233, 0x0B},
    {0x0234, 0x0B},
    {0x0235, 0x00},
    {0x0236, 0x00},
    {0x0237, 0x00},
    {0x0238, 0xC0},
    {0x0239, 0xDA},
    {0x023A, 0x00},
    {0x023B, 0x00},
    {0x023C, 0x00},
    {0x023D, 0x00},
    {0x023E, 0xC0},
    {0x0247, 0x04},
    {0x0248, 0x00},
    {0x0249, 0x00},
    {0x024A, 0x04},
    {0x024B, 0x00},
    {0x024C, 0x00},
    {0x024D, 0x04},
    {0x024E, 0x00},
    {0x024F, 0x00},
    {0x0250, 0x13},
    {0x0251, 0x00},
    {0x0252, 0x00},
    {0x0253, 0x13},
    {0x0254, 0x00},
    {0x0255, 0x00},
    {0x0256, 0x13},
    {0x0257, 0x00},
    {0x0258, 0x00},
    {0x0259, 0x03},
    {0x025A, 0x00},
    {0x025B, 0x00},
    {0x025C, 0x03},
    {0x025D, 0x00},
    {0x025E, 0x00},
    {0x025F, 0x03},
    {0x0260, 0x00},
    {0x0261, 0x00},
    {0x0262, 0x03},
    {0x0263, 0x00},
    {0x0264, 0x00},
    {0x0265, 0x00},
    {0x0266, 0x00},
    {0x0267, 0x00},
    {0x0268, 0x00},
    {0x0269, 0x00},
    {0x026A, 0x00},
    {0x026B, 0x00},
    {0x026C, 0x00},
    {0x026D, 0x00},
    {0x026E, 0x00},
    {0x026F, 0x00},
    {0x0270, 0x00},
    {0x0271, 0x00},
    {0x0272, 0x00},
    {0x028A, 0x00},
    {0x028B, 0x00},
    {0x028C, 0x00},
    {0x028D, 0x00},
    {0x028E, 0x00},
    {0x028F, 0x00},
    {0x0290, 0x00},
    {0x0291, 0x00},
    {0x0292, 0x3F},
    {0x0293, 0x2F},
    {0x0294, 0xC0},
    {0x0296, 0x00},
    {0x0297, 0x02},
    {0x0299, 0x02},
    {0x029D, 0xC2},
    {0x029E, 0x01},
    {0x029F, 0x00},
    {0x02A9, 0x66},
    {0x02AA, 0x02},
    {0x02AB, 0x00},
    {0x02B7, 0xFF},
    {0x02BC, 0x00},
    {0x0302, 0x00},
    {0x0303, 0x00},
    {0x0304, 0x00},
    {0x0305, 0x00},
    {0x0306, 0x07},
    {0x0307, 0x00},
    {0x0308, 0x00},
    {0x0309, 0x00},
    {0x030A, 0x00},
    {0x030B, 0x80},
    {0x030C, 0x00},
    {0x030D, 0x00},
    {0x030E, 0x00},
    {0x030F, 0x00},
    {0x0310, 0x00},
    {0x0311, 0x00},
    {0x0312, 0x00},
    {0x0313, 0x00},
    {0x0314, 0x00},
    {0x0315, 0x00},
    {0x0316, 0x00},
    {0x0317, 0x00},
    {0x0318, 0x00},
    {0x0319, 0x00},
    {0x031A, 0x00},
    {0x031B, 0x00},
    {0x031C, 0x00},
    {0x031D, 0x00},
    {0x031E, 0x00},
    {0x031F, 0x00},
    {0x0320, 0x00},
    {0x0321, 0x00},
    {0x0322, 0x00},
    {0x0323, 0x00},
    {0x0324, 0x00},
    {0x0325, 0x00},
    {0x0326, 0x00},
    {0x0327, 0x00},
    {0x0328, 0x00},
    {0x0329, 0x00},
    {0x032A, 0x00},
    {0x032B, 0x00},
    {0x032C, 0x00},
    {0x032D, 0x00},
    {0x032E, 0x00},
    {0x032F, 0x00},
    {0x0330, 0x00},
    {0x0331, 0x00},
    {0x0332, 0x00},
    {0x0333, 0x00},
    {0x0334, 0x00},
    {0x0335, 0x00},
    {0x0336, 0x00},
    {0x0337, 0x00},
    {0x0338, 0x00},
    {0x0339, 0x1F},
    {0x033B, 0x00},
    {0x033C, 0x00},
    {0x033D, 0x00},
    {0x033E, 0x00},
    {0x033F, 0x00},
    {0x0340, 0x00},
    {0x0341, 0x00},
    {0x0342, 0x00},
    {0x0343, 0x00},
    {0x0344, 0x00},
    {0x0345, 0x00},
    {0x0346, 0x00},
    {0x0347, 0x00},
    {0x0348, 0x00},
    {0x0349, 0x00},
    {0x034A, 0x00},
    {0x034B, 0x00},
    {0x034C, 0x00},
    {0x034D, 0x00},
    {0x034E, 0x00},
    {0x034F, 0x00},
    {0x0350, 0x00},
    {0x0351, 0x00},
    {0x0352, 0x00},
    {0x0353, 0x00},
    {0x0354, 0x00},
    {0x0355, 0x00},
    {0x0356, 0x00},
    {0x0357, 0x00},
    {0x0358, 0x00},
    {0x0359, 0x00},
    {0x035A, 0x00},
    {0x035B, 0x00},
    {0x035C, 0x00},
    {0x035D, 0x00},
    {0x035E, 0x00},
    {0x035F, 0x00},
    {0x0360, 0x00},
    {0x0361, 0x00},
    {0x0362, 0x00},
    {0x0487, 0x00},
    {0x0508, 0x13},
    {0x0509, 0x22},
    {0x050A, 0x0D},
    {0x050B, 0x0C},
    {0x050C, 0x07},
    {0x050D, 0x3F},
    {0x050E, 0x17},
    {0x050F, 0x2C},
    {0x0510, 0x09},
    {0x0511, 0x08},
    {0x0512, 0x07},
    {0x0513, 0x3F},
    {0x0515, 0x00},
    {0x0516, 0x00},
    {0x0517, 0x00},
    {0x0518, 0x00},
    {0x0519, 0x80},
    {0x051A, 0x03},
    {0x051B, 0x00},
    {0x051C, 0x00},
    {0x051D, 0x00},
    {0x051E, 0x00},
    {0x051F, 0x80},
    {0x0521, 0x2B},
    {0x052A, 0x00},
    {0x052B, 0x01},
    {0x052C, 0x87},
    {0x052D, 0x03},
    {0x052E, 0x19},
    {0x052F, 0x19},
    {0x0531, 0x00},
    {0x0532, 0x2B},
    {0x0533, 0x04},
    {0x0534, 0x00},
    {0x0535, 0x00},
    {0x0536, 0x00},
    {0x0537, 0x00},
    {0x0538, 0x00},
    {0x0539, 0x00},
    {0x053A, 0x01},
    {0x053B, 0x03},
    {0x053C, 0x00},
    {0x053D, 0x04},
    {0x053E, 0x02},
    {0x0588, 0x07},
    {0x0589, 0x0F},
    {0x058A, 0x00},
    {0x058B, 0x08},
    {0x058C, 0x50},
    {0x058D, 0x00},
    {0x059B, 0x78},
    {0x059C, 0x8C},
    {0x059D, 0x13},
    {0x059E, 0x24},
    {0x059F, 0x0D},
    {0x05A0, 0x0C},
    {0x05A1, 0x07},
    {0x05A2, 0x3F},
    {0x05A4, 0x08},
    {0x05A5, 0x00},
    {0x05A6, 0x03},
    {0x05AC, 0x09},
    {0x05AD, 0xAA},
    {0x05AE, 0x4A},
    {0x05B1, 0x0E},
    {0x05B2, 0x03},
    {0x0802, 0x35},
    {0x0803, 0x05},
    {0x0804, 0x00},
    {0x0805, 0x00},
    {0x0806, 0x00},
    {0x0807, 0x00},
    {0x0808, 0x00},
    {0x0809, 0x00},
    {0x080A, 0x00},
    {0x080B, 0x00},
    {0x080C, 0x00},
    {0x080D, 0x00},
    {0x080E, 0x00},
    {0x080F, 0x00},
    {0x0810, 0x00},
    {0x0811, 0x00},
    {0x0812, 0x00},
    {0x0813, 0x00},
    {0x0814, 0x00},
    {0x0815, 0x00},
    {0x0816, 0x00},
    {0x0817, 0x00},
    {0x0818, 0x00},
    {0x0819, 0x00},
    {0x081A, 0x00},
    {0x081B, 0x00},
    {0x081C, 0x00},
    {0x081D, 0x00},
    {0x081E, 0x00},
    {0x081F, 0x00},
    {0x0820, 0x00},
    {0x0821, 0x00},
    {0x0822, 0x00},
    {0x0823, 0x00},
    {0x0824, 0x00},
    {0x0825, 0x00},
    {0x0826, 0x00},
    {0x0827, 0x00},
    {0x0828, 0x00},
    {0x0829, 0x00},
    {0x082A, 0x00},
    {0x082B, 0x00},
    {0x082C, 0x00},
    {0x082D, 0x00},
    {0x082E, 0x00},
    {0x082F, 0x00},
    {0x0830, 0x00},
    {0x0831, 0x00},
    {0x0832, 0x00},
    {0x0833, 0x00},
    {0x0834, 0x00},
    {0x0835, 0x00},
    {0x0836, 0x00},
    {0x0837, 0x00},
    {0x0838, 0x00},
    {0x0839, 0x00},
    {0x083A, 0x00},
    {0x083B, 0x00},
    {0x083C, 0x00},
    {0x083D, 0x00},
    {0x083E, 0x00},
    {0x083F, 0x00},
    {0x0840, 0x00},
    {0x0841, 0x00},
    {0x0842, 0x00},
    {0x0843, 0x00},
    {0x0844, 0x00},
    {0x0845, 0x00},
    {0x0846, 0x00},
    {0x0847, 0x00},
    {0x0848, 0x00},
    {0x0849, 0x00},
    {0x084A, 0x00},
    {0x084B, 0x00},
    {0x084C, 0x00},
    {0x084D, 0x00},
    {0x084E, 0x00},
    {0x084F, 0x00},
    {0x0850, 0x00},
    {0x0851, 0x00},
    {0x0852, 0x00},
    {0x0853, 0x00},
    {0x0854, 0x00},
    {0x0855, 0x00},
    {0x0856, 0x00},
    {0x0857, 0x00},
    {0x0858, 0x00},
    {0x0859, 0x00},
    {0x085A, 0x00},
    {0x085B, 0x00},
    {0x085C, 0x00},
    {0x085D, 0x00},
    {0x085E, 0x00},
    {0x085F, 0x00},
    {0x0860, 0x00},
    {0x0861, 0x00},
    {0x090E, 0x02},
    {0x0943, 0x01},
    {0x0949, 0x13},
    {0x094A, 0x03},
    {0x094E, 0x49},
    {0x094F, 0xE2},
    {0x095E, 0x00},
    {0x0A02, 0x00},
    {0x0A03, 0x01},
    {0x0A04, 0x01},
    {0x0A05, 0x01},
    {0x0A14, 0x00},
    {0x0A1A, 0x00},
    {0x0A20, 0x00},
    {0x0A26, 0x00},
    {0x0A2C, 0x00},
    {0x0A38, 0x00},
    {0x0A39, 0x00},
    {0x0A3A, 0x00},
    {0x0A3C, 0x00},
    {0x0A3D, 0x00},
    {0x0A3E, 0x00},
    {0x0A40, 0x00},
    {0x0A41, 0x00},
    {0x0A42, 0x00},
    {0x0A44, 0x00},
    {0x0A45, 0x00},
    {0x0A46, 0x00},
    {0x0A48, 0x00},
    {0x0A49, 0x00},
    {0x0A4A, 0x00},
    {0x0A4C, 0x00},
    {0x0A4D, 0x00},
    {0x0A4E, 0x00},
    {0x0A4F, 0x00},
    {0x0A50, 0x00},
    {0x0A51, 0x00},
    {0x0A52, 0x00},
    {0x0A53, 0x00},
    {0x0A54, 0x00},
    {0x0A55, 0x00},
    {0x0A56, 0x00},
    {0x0A57, 0x00},
    {0x0A58, 0x00},
    {0x0A59, 0x00},
    {0x0A5A, 0x00},
    {0x0A5B, 0x00},
    {0x0A5C, 0x00},
    {0x0A5D, 0x00},
    {0x0A5E, 0x00},
    {0x0A5F, 0x00},
    {0x0B44, 0x2F},
    {0x0B46, 0x00},
    {0x0B47, 0x0C},
    {0x0B48, 0x0C},
    {0x0B4A, 0x1E},
    {0x0B57, 0x0E},
    {0x0B58, 0x01},
    {0x0C02, 0x03},
    {0x0C03, 0x03},
    {0x0C07, 0x01},
    {0x0C08, 0x01},
};

i2c_si5395_reg_t i2c_si5395_reg_value2[] =
{
    {0x0514, 0x01},
    {0x001C, 0x01},
    {0x0540, 0x00},
    {0x0B24, 0xC3},
    {0x0B25, 0x02}
};

static int i2c_page_write(int fd, unsigned char addr, unsigned int reg_addr)
{
    int ret = 0;
    unsigned char outbuf[2] = {0};
    struct i2c_rdwr_ioctl_data packets;
    struct i2c_msg messages;

    ioctl(fd, I2C_TIMEOUT, 1);/*超时时间*/
    ioctl(fd, I2C_RETRIES, 2);/*重复次数*/

    packets.nmsgs = 1;       
    packets.msgs = &messages;

    outbuf[0] = 0x01;
    outbuf[1] = (unsigned char)((reg_addr >> 8) & 0x0f);

    //发送要写的page地址
    messages.addr = addr;       
    messages.flags = 0;
    messages.len = 2;       
    messages.buf = outbuf;

    ret = ioctl(fd, I2C_RDWR, (unsigned long)&packets);   
    if (ret < 0) {
        printf("ERROR WRITE PAGE\n");
    }
    return ret;
}



static int i2c_byte_write(int fd, unsigned char addr, unsigned int reg_addr, unsigned char reg_value)
{
	int ret = 0;
    unsigned char outbuf[2] = {0};
    struct i2c_rdwr_ioctl_data packets;
    struct i2c_msg messages;

    ioctl(fd, I2C_TIMEOUT, 1);/*超时时间*/
    ioctl(fd, I2C_RETRIES, 2);/*重复次数*/

    packets.nmsgs = 1;       //数据帧类型只有一种,只需要发送一个起始信号,因此是1
    packets.msgs = &messages;

    outbuf[0] = (unsigned char)(reg_addr & 0xff);
    outbuf[1] = reg_value;

    //发送要写的寄存器地址
    messages.addr = addr;       
    messages.flags = 0;
    messages.len = 2;       //寄存器地址加数据,共发送2个字节
    messages.buf = outbuf;

    printf("outbuf[0] = 0x%2x, outbuf[1] = 0x%2x\n", outbuf[0], outbuf[1]);
    ret = ioctl(fd, I2C_RDWR, (unsigned long)&packets);   
    if (ret < 0) {
        printf("ERROR WRITE:%d,addr = 0x%2x reg_addr = 0x%4x, reg_value = 0x%2x\n", ret, addr, reg_addr, reg_value);
	}
	return ret;
}

static int i2c_byte_read(int fd, unsigned char addr, unsigned int reg_addr, unsigned char *reg_value)
{
	int ret = 0;
    struct i2c_rdwr_ioctl_data packets;
    struct i2c_msg messages[2];
	unsigned char outbuf = 0;

    ioctl(fd, I2C_TIMEOUT, 1);/*超时时间*/
    ioctl(fd, I2C_RETRIES, 2);/*重复次数*/

    outbuf = (unsigned char)(reg_addr & 0xff);

    packets.nmsgs = 2;        
    packets.msgs = &messages[0];

    //发送要读取的寄存器地址
	messages[0].addr = addr;
	messages[0].flags = 0;
	messages[0].len = 1;
	messages[0].buf = &outbuf;

    messages[1].addr = addr;           //i2c设备地址
    messages[1].flags = 1;      //读操作
    messages[1].len = 1;               //数据长度
    messages[1].buf = reg_value;             //读取的数据保存在reg_value

    ret = ioctl (fd, I2C_RDWR, (unsigned long)&packets);  //与内核交互
    if (ret < 0) {
		printf("ERROR READ:%d,addr = 0x%2x reg_addr = 0x%4x\n", ret, addr, reg_addr);
	}

    return ret;
}

static int init_i2c_si5395_text(int fd, i2c_si5395_reg_t *i2c_si5395_reg_value, int array_size)
{
    int pos = 0;
    unsigned char value = 0;

    int old_page_num = 0xff, cur_page_num = 0;

    printf("Si5395 reg size is %d\n", array_size);
    i2c_si5395_reg_t* p = i2c_si5395_reg_value;

    for (pos = 0; pos < array_size; pos++){
        printf("************************************\n");
        cur_page_num = (p->reg_addr >> 8) & 0x0f;
        if (old_page_num != cur_page_num) {
            i2c_page_write(fd, I2C_SI5395, p->reg_addr);
            printf("page = 0x%x, old_page_num = 0x%x\n", cur_page_num, old_page_num);
            old_page_num = cur_page_num;
        }
        i2c_byte_read(fd, I2C_SI5395, p->reg_addr, &value);
        printf("READ:  addr = 0x69, reg_addr = 0x%4x, new_value = 0x%2x\n", p->reg_addr, value);
        usleep(10*1000);
        i2c_byte_write(fd, I2C_SI5395, p->reg_addr, p->reg_value);
        printf("WRITE: addr = 0x69, reg_addr = 0x%4x, reg_value = 0x%2x\n", p->reg_addr, p->reg_value);
        usleep(10*1000);
        i2c_byte_read(fd, I2C_SI5395, p->reg_addr, &value);
        printf("READ:  addr = 0x69, reg_addr = 0x%4x, new_value = 0x%2x\n", p->reg_addr, value);
        usleep(10*1000);
        p++;
    }
}


static int init_i2c_si5395(void)
{
    int fd;
    int array_size = 0;
        
    fd = open(I2C_DEV, O_RDWR);
    if (fd < 0) {
        printf("failed to open %s\n", I2C_DEV);
        return (-1);
    }
	
    array_size = sizeof(i2c_si5395_reg_value0) / sizeof(i2c_si5395_reg_t);
    init_i2c_si5395_text(fd, i2c_si5395_reg_value0, array_size);
    usleep(300*1000);  
    array_size = sizeof(i2c_si5395_reg_value1) / sizeof(i2c_si5395_reg_t);
    init_i2c_si5395_text(fd, i2c_si5395_reg_value1, array_size);
    array_size = sizeof(i2c_si5395_reg_value2) / sizeof(i2c_si5395_reg_t);
    init_i2c_si5395_text(fd, i2c_si5395_reg_value2, array_size);
	
    close(fd);
    return 0;
}

int main(int argc, char *argv[])
{
    printf("i2c_si5395 by fish.\n");
    init_i2c_si5395();

    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值