钻石会员
主题
帖子
积分11063
阅读权限50
注册时间2009-12-25
最后登录1970-1-1
在线时间 小时
|
本帖最后由 狗狗百里游 于 2017-1-16 15:39 编辑
//刷新一个测试需要的时间 77924us 12频 Avr 328P 16MHz 硬件I2C while ((TWCR & _BV(TWINT)) == 0) {};
//刷新一个测试需要的时间 122916us 7频, Avr 328P 16MHz 模拟I2C digitalPinToPort(_sdaPin);
//用pinMode模拟开漏输出
//#define SDA_LOW() pinMode(i2c_sda_pin, OUTPUT); //设置I2C强下拉
//#define SDA_HIGH() pinMode(i2c_sda_pin, INPUT_PULLUP); //设置I2C关闭弱上拉,变成高阻,I2C端口需要外接上拉电阻
//刷新一个测试需要的时间 34588us 28频, ESP8266 160MHz 硬件I2C,
//刷新一个测试需要的时间 20993us 47频, ESP8266 160MHz 【#define SDA_LOW() (GPES = i2c_sda_pin_BIT)】模拟I2C,提前计算移位,//1x NOP U8GLIB_SSD1306_128X64_2X
//目前ESP32 240MHz的速度很快,暂时不优化设置IO口的代码
//刷新一个测试需要的时间 14083us 70频, ESP32 240MHz 模拟I2C,使用#define SDA_LOW() digitalWrite(i2c_sda_pin, LOW)
//刷新一个测试需要的时间 17453us 56频, ESP32 240MHz I2C,<Wire.h> Wire.setClock(900000L);
//刷新一个测试需要的时间 32069us 31频, ESP32 240MHz I2C,<Wire.h> Wire.setClock(400000L);
//刷新一个测试需要的时间 11468us 87频, DUE(ARM 32) 84MHz 硬件I2C, <HW_ARM.h> DUE_TWI_SetClock(twi, 2400000L, VARIANT_MCK);
//刷新一个测试需要的时间 24777us 40频, DUE(ARM 32) 84MHz 模拟I2C, _sclBitMask = digitalPinToBitMask(_sclPin);
//刷新一个测试需要的时间 27404us 36频, DUE(ARM 32) 84MHz 硬件I2C <Wire.h>
//刷新一个测试需要的时间 72544us 13频, DUE(ARM 32) 84MHz 模拟I2C, pinMode(_sda_pin, OUTPUT); digitalWrite(_scl_pin, LOW);
//刷新一个测试需要的时间 40916us 24频, Arduino101 32MHz 硬件I2C,
//刷新一个测试需要的时间 67519us 14频, Arduino101 32MHz 模拟I2C,提前计算移位,精简到【SET_ARC_BIT_YUKI(reg_sda_pin, READ_ARC_REG(reg_sda_pin) & ~ (ulGPIOId_sda_pin_BIT));】
//刷新一个测试需要的时间 176582us 5频, DFRobot Bluno M3 72Mhz 【STM32 F103RET6】 I2C,<Wire.h> IDE自带库,其实是模拟I2C,使用【digitalWrite】设置IO模拟I2C,Wire.setClock(400000L)//刷新一个测试需要的时间 2210596us DFRobot Bluno M3 72Mhz 【STM32 F103RET6】 模拟I2C,使用【g_APinDescription】设置IO模拟I2C,//u8g原始代码,U8GLIB_SSD1306_128X64_2X
//刷新一个测试需要的时间 32361us 30频, DFRobot Bluno M3 72Mhz 【STM32 F103RET6】 模拟I2C,使用【g_APinDescription[i2c_sda_pin].pPort->BRR】+【ulPin】设置IO模拟I2C,//u8g原始代码,U8GLIB_SSD1306_128X64_2X
//Fireduino开发板 模拟I2C,使用digitalPinToPort(_sclPin),不能用A4,A5等ad端口,以及硬件SDA,SCL端口,做为模拟端口使用
//#define SDA 8 //有些开发板的芯片,不能用A4,A5等ad端口,以及硬件SDA,SCL端口,做为模拟端口使用
//#define SCL 9
//刷新一个测试需要的时间 43657us 23频, Fireduino开发板 模拟I2C,使用digitalPinToPort(_sclPin),不能用A4,A5等ad端口,以及硬件SDA,SCL端口,做为模拟端口使用
|
|