UP-NETS3C2410-S 键盘初始化一段代码求解释

dagelou   2009-10-16 20:46 楼主
博创平台UPNET2410-S 键盘由MEGA8控制,MEGA8接IIC总线。

  1. #define I2COWNER_ADDRESS                (0x10>>1)
  2. #define MEGA8_I2CADDRESS                (0x60)

  3. #define CMD_CTRL_BASE                0x0
  4. #define CMD_CTRL                        (CMD_CTRL_BASE+0)        //控制字
  5. #define CMD_MST_ADDR                (CMD_CTRL_BASE+1)        //主控端地址
  6. #define CMD_GET_MKEY                (CMD_CTRL_BASE+2)        //读取扫描键盘码
  7. #define CMD_GET_TEST1                (CMD_CTRL_BASE+0xa)        //读取测试寄存器

  8. typedef __packed struct{
  9.         unsigned char cmd;       
  10.         unsigned char ctrl;
  11. }I2C_control;
  12. void Key_Init(void)
  13. {
  14.         I2C_control i2c_ctrl;
  15.         IIC_init();
  16.         Set_IIC_mode(MCU_IICCON, NULL);

  17. [color=#FF0000]        i2c_ctrl.cmd=CMD_MST_ADDR;
  18.         i2c_ctrl.ctrl=I2COWNER_ADDRESS;
  19.         IIC_Send(MEGA8_I2CADDRESS, (const char*)&i2c_ctrl, sizeof(i2c_ctrl));

  20.         i2c_ctrl.cmd=CMD_CTRL;
  21.         i2c_ctrl.ctrl = CTRL_MKEn;
  22.         IIC_Send(MEGA8_I2CADDRESS, (const char*)&i2c_ctrl, sizeof(i2c_ctrl));[/color]

  23.     INTS_OFF();
  24.         SetISR_Interrupt(IRQ_KBD, Key_ISR, NULL);
  25.     INTS_ON();
  26. }

问题:IIC工作流程应该是先发送地址,然后发送数据。那个第一个IIC_Send发送主控端地址是什么意思?而且还发送两个字节?这两个IIC_Send发送的数据有什么意义?望赐教。。。

回复评论 (1)

CPU作为主设备给slave设备发送数据,那么第一个就是这个设备的地址,
那么,一个设备里面也是地址空间的,你要往哪里写呢,第二个就是这个设备里面的地址
点赞  2009-10-16 23:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复