打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
arm 课堂复习笔记 day06
userphoto

2018.09.12

关注
回顾:
     1、完善shell框架
        增加Makefile
            目标:依赖
                 (TAB)规则
                
            .o:%.c
                  arm-cortex....-gcc -c -nostdlib $< -o $@
         hello.c
            hello:hello.c
               gcc hello.c -o hello
               
        增加一个链接脚本
            进一步理解链接的过程
        修改了BUG
            对FIFO的控制
            退格键的问题
------------------------------------------------------
1、I2C
  1.1 I2C的定义
     它是由飞利浦开发的两线式串行同步总线
    
  1.2 特点:
         通信使用两条线完成
         SCL: 通信的双方使用的时钟信号
         SDA: 通信的双方交换数据的通道
        
         1)布线简单,硬件互联成本低
         2)I2C总线上可以有多个设备,设备之间有主从之分
         3)通信的发起者一定是主设备
         4)I2C总线支持总线冲突仲裁
         5)每个从设备都有特定的从设备地址
  1.3 通信协议
      起始信号:当SCL处于高电平时 SDA出现一个下降沿
      结束信号:                              上升
      应答信号:发送方发送完一个字节,需要接收方确认
                第九个周期,接收控制SDA
                需要在SCL处于高电平期间,保证SDA上是低电平
                (如果接收不拉低SDA,SDA默认是高电平)
      收发数据过程中,SDA在SCL处于低电平期间进行
                      电平状态的转换,高
                      当SCL处于高电平期间保持SDA电平不变
      主设备发送start信号,紧跟着主设备发送 从设备地址<<1|R/W#
     
     
      写/发送过程
          START  Slaveaddress<<1|W#  等待ACK  写数据到SDA 等待ACK STOP
      读/接收过程
          START  Slaveaddress<<1|R   等待ACK  从SDA读数据  发送ACK STOP   
     
2、电路原理图
   MCU_SCL_2  ----->GPIOD6
   MCU_SDA_2  ----->GPIOD7
3、cpu datasheet关于I2C控制器的章节
  3.1 管脚功能的选择 
      P70
         GPIOD6: 选择为SCL2 对应的是功能1
      P84
         GPIOD7:选择为SDA2 对应的是功能1
     
      P757
         GPIODALTFN0  R/W    0xC001D020
            [13:12] 01, GPIOD6选择为功能1
            [15:14] 01, GPIOD7选择为功能1 
  3.2 I2C控制器的复位
      system control P294
     
      IPRESET0 R/W 0xC0012000
           [21]: 数据手册上写错了
                 应该是[22]
                 0, 执行复位动作  
  3.3 I2C控制器
      其中有3个I2C控制器
       问题:G-sensor挂在哪个I2C控制器上
         答:I2C2控制器
             根据datasheet P84管脚功能说明
                  +
             电路原理图中G-sensor使用管脚
            
             推断G-sensor挂在了I2C2控制器上               
      收发的数据帧是8bit,发送是从高位开始发
      收发数据的速率介于100Kbit/s ~ 400Kbit/s
      I2C控制器可以配置为主设备也可以配置为从设备 
     
     
      I2CCON2   R/W    0xC00A6000
          [3:0], 1111, 慢速发送数据
          [4], pending ,中断未决标志
               读到0 ,代表无中断未决
               写入0, 清空该bit
              
               读到1, 代表有中断未决
               写入1,impossible
          [5], 1,使能收发中断
          [6], 1,I2C CLK = PCLK/256
          [7], 0, 不产生ACK
               1,自动产生ACK  
      I2C控制器的时钟源使能 P302
          I2CLKENB2  0xC00B0000
             [3]  1,使能给I2C控制器的PCLK时钟 
      I2CSTAT2   0xC00A6004
           [0], 0,收到ACK信号
                1,未收到ACK信号
           [1], 0, start/stop信号已经产生
                1,收到的从设备地址为0x00
           [3], 0, 仲裁成功
                1,总线冲突仲裁失败
           [4], 0, 禁止输出使能
                1,输出使能
           [5], 读出0 代表总线空闲
                写入0 产生stop信号
                读出1 代表总线忙
                写入1 产生start信号
           [7:6] S5P6818数据手册中漏掉未指明其意义
                 s5p4418数据手册中有描述
                 或者通过阅读内核中I2C控制器驱动程序
     
       I2CDS    0xC00A600C
           [7:0] 数据的收发
                  收的时候就是读 这8bit
                  发的时候I2CSTAT2[4]=1 再做数据的写入
       I2CLC    0xC00A6010
           [1:0], sda delay时长为多少个周期
                  01/10/11
           [2], 1 使能干扰信号的过滤
           
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
i2c通信的详细讲解
IIC通信协议,搞懂这篇就够了
IIC 总线接口
24C02使用详解
简单的I2C协议理解!(无图) - EEcha的BLOG - 52RD R&D Blog ...
I2C 串行总线的组成及工作原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服