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

jjfjnu 2009-10-16 08:46:14
博创平台UPNET2410-S 键盘由MEGA8控制,MEGA8接IIC总线。

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

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

typedef __packed struct{
unsigned char cmd;
unsigned char ctrl;
}I2C_control;
void Key_Init(void)
{
I2C_control i2c_ctrl;
IIC_init();
Set_IIC_mode(MCU_IICCON, NULL);

i2c_ctrl.cmd=CMD_MST_ADDR;
i2c_ctrl.ctrl=I2COWNER_ADDRESS;
IIC_Send(MEGA8_I2CADDRESS, (const char*)&i2c_ctrl, sizeof(i2c_ctrl));

i2c_ctrl.cmd=CMD_CTRL;
i2c_ctrl.ctrl = CTRL_MKEn;
IIC_Send(MEGA8_I2CADDRESS, (const char*)&i2c_ctrl, sizeof(i2c_ctrl));


INTS_OFF();
SetISR_Interrupt(IRQ_KBD, Key_ISR, NULL);
INTS_ON();
}

问题:IIC工作流程应该是先发送地址,然后发送数据。那个第一个IIC_Send发送主控端地址是什么意思?而且还发送两个字节?这两个IIC_Send发送的数据有什么意义?望赐教。。。
...全文
58 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
-小仙- 2009-10-16
  • 打赏
  • 举报
回复
CPU作为主设备给slave设备发送数据,那么第一个就是这个设备的地址,
那么,一个设备里面也是地址空间的,你要往哪里写呢,第二个就是这个设备里面的地址

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧