博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
I2C的SCL和SDA的定义
阅读量:5839 次
发布时间:2019-06-18

本文共 1370 字,大约阅读时间需要 4 分钟。

hot3.png

之前一直认为I2C的SCL和SDA针脚是可以改为其他模拟输入的针脚,正好晚上闲来无事,翻了翻源码,终于让我找到了定义的位置:pins_arduino.h

这个文件中定义了所有针脚的宏及对应关系:

static const uint8_t SS   = 10;

static const uint8_t MOSI = 11;
static const uint8_t MISO = 12;
static const uint8_t SCK  = 13;
static const uint8_t SDA = 18;
static const uint8_t SCL = 19;
static const uint8_t LED_BUILTIN = 13;
static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;
从这里能够看出,对于特殊针脚的一些定义,其中逻辑针脚是接着led的13继续定义的。而SDA和SCL与A4和A5定义为同一针脚,从这里可以看出,系统默认的就是A4和A5了,如果想换其他针脚,可以对应修改。

在twi.c中对SCL和SDA的直接引用,下面红色部分代码:

void twi_init(void)

{
  // initialize state
  twi_state = TWI_READY;
  twi_sendStop = true; // default value
  twi_inRepStart = false;
  
  // activate internal pullups for twi.
  digitalWrite(SDA, 1);
  digitalWrite(SCL, 1);
  // initialize twi prescaler and bit rate
  cbi(TWSR, TWPS0);
  cbi(TWSR, TWPS1);
  TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;
  /* twi bit rate formula from atmega128 manual pg 204
  SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
  note: TWBR should be 10 or higher for master mode
  It is 72 for a 16mhz Wiring board with 100kHz TWI */
  // enable twi module, acks, and twi interrupt
  TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA);
}

转载于:https://my.oschina.net/u/241133/blog/143881

你可能感兴趣的文章
你真的有处理好异常吗
查看>>
HBase 2.0公测发布
查看>>
Python 太糟糕了?开发者总结了 8 大原因
查看>>
“互联网+广交会”,AMT助广交会确立互联网时代竞争新优势
查看>>
配置ks.cfg实现自动安装过程
查看>>
Soul 网关发布 1.0.4-RELEASE 版本
查看>>
Setting Up Load Balancers Using Terraform
查看>>
第一届对象存储技术及应用大会:Esri中国周宁——万物互联时代,云存储技术的变革与展望...
查看>>
有孚网络副总裁吕鑫:合纵连横,云领未来—如何打造低成本混合云架构
查看>>
GNU nano 4.0 发布,简单又强大的文本编辑器
查看>>
最佳实践系列丨Docker EE 日志记录最佳实践(二)
查看>>
收集移动端HTML5/H5使用的插件
查看>>
备用电源
查看>>
安卓应用安全指南 4.2.1 创建/使用广播接收器 示例代码
查看>>
中小学生也能独立创作VR内容?睿诚华智发布面向K12的VR STEAM产品
查看>>
回文检测(包含中文与字符)
查看>>
Creating a custom creation complete effect on a Flex Alert control
查看>>
在WPF里面显示DIB图片格式的图片
查看>>
教你怎么使用Jmail发送匿名的邮件(不要身份认证)
查看>>
QQ登陆功能的实现2
查看>>