基于Kinetis系列微控制器K60芯片的I2C接口函数程序说明1

I2C、I2C或IIC通信提供了一种可以与若干设备之间进行通信的方法。
在总线最大负载下,该接口可被设计为100 kbit/s的传输速率。
该接口处理信息波特率最大可达系统时钟的二十分之一,以此减少总线负载。
最大总线电容为400pf限制了设备的最大通信长度和可连接从设备数。

I2C模块具有以下特点:
• 兼容IIC-bus规格
• Multimaster操作
• 软件可编程为64种不同的串行时钟频率之一
• Software-selectable确认位
• 中断驱动的逐字节数据传输
• 主从切换下自动仲裁
• 呼叫地址识别中断
• 启动和停止信号的产生和检测
• 重复启动信号的产生和检测
• 确认位产生和检测
• bus忙检测
• General调用识别
• 10位地址扩展
• 可编程故障输入筛选
• 低功率模式唤醒slave地址匹配
• 多从地址支持
• DMA支持

具体初始化代码如下:
重点:
1.MULT = 2 对应 mul = 4
2.ICR = 0x17 ICR为Clock rate时钟频率
从I2C Divider and Hold Values可得:
ICR SCL Divider SDA Hold Value SCL Hold (Start) Value SCL Hold (Stop) Value
17 128 21 58 65
则 I2C baud rate = bus speed (Hz)/(mul × SCL divider) 即 135MHz/(4 × 128) = 263.6718kHz

void I2C_Init(I2Cn I2CNum)
{    
  if(I2CNum == I2CNUM0)
  {
    SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;         //开启 I2C0时钟
   
		PORTA_PCR12 = PORT_PCR_MUX(8);// 配置 I2C0功能的 GPIO 接
		PORTA_PCR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值