为SSD1306 i2c驱动程序

⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.xmece.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
新6帖子/ 0
最后发表
肯庄
离线
最后看到:2年9个月前
加入:2016-10-15 05:40
为SSD1306 i2c驱动程序

亲爱的先生,
我只是想init OLED SSD1306司机,在外设使用i2c演示项目,但是它不工作,i2c频道只发送0 x00无论我怎么改变代码。请帮助。

代码:
空白demo_i2c_init(空白)
{

静态常量i2c_config cfg = {
。speed = HW_I2C_SPEED_STANDARD,
.mode = HW_I2C_MODE_MASTER,
.addr_mode = HW_I2C_ADDRESSING_7B,
};

hw_i2c_init (HW_I2C1 cfg);

将srand (OS_GET_TICK_COUNT ());

如果(config_need) {
int犯错;
i2c_device开发;

dev = ad_i2c_open (SSD1306);

呃= SSD1306_power_on (dev);
如果(err) {
printf(换行符”错误SSD1306_power_on 0 X % X”,错);
}

ad_i2c_close (dev);
config_need = false;
}
}
int SSD1306_power_on (i2c_device dev)
{
/ / OS_ENTER_CRITICAL_SECTION ();
ad_i2c_device_acquire (dev);
SSD1306_write_i (dev, 0机加区);
0 x00 SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 x10);
0 x40 SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 xb0);
SSD1306_write_i (dev, 0 x81);
SSD1306_write_i (dev, 0 xaf);
SSD1306_write_i (dev, 0 xa1);
SSD1306_write_i (dev, 0 xa6);
SSD1306_write_i (dev, 0 xa8);
0 x0f SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 xc8);
SSD1306_write_i (dev, 0 xd3);
0 x00 SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 xd5);
SSD1306_write_i (dev, 0 x80);
SSD1306_write_i (dev, 0 xd9);
0将SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 xda);
0 x02 SSD1306_write_i (dev);
0 xdb SSD1306_write_i (dev);
0 x40 SSD1306_write_i (dev);
SSD1306_write_i (dev, 0 x8d);
SSD1306_write_i (dev, 0 x10);
SSD1306_write_i (0 xaf);
ad_i2c_device_release (dev);
/ / OS_LEAVE_CRITICAL_SECTION ();
返回true;
}

静态int SSD1306_write_i (i2c_device dev uint8_t val)
{
uint8_t op [2] = {0 x12, val};

返回ad_i2c_write (dev, op, sizeof (op));
}

设备:
肯庄
离线
最后看到:2年9个月前
加入:2016-10-15 05:40
#如果CFG_DEMO_OLED_SSD1306

#如果CFG_DEMO_OLED_SSD1306
/ *结合湿度和压力传感器* /
I2C_SLAVE_DEVICE (I2C1 SSD1306 0 x78, HW_I2C_ADDRESSING_7B, HW_I2C_SPEED_STANDARD);
# endif

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨,肯庄,

嗨,肯庄,

我不要看到什么毛病你已经粘贴的代码,你正确地打开适配器,然后你开始与i2c的交互,在resource_aquire ad_i2c_open以来()函数并不是必需的()函数调用resource_acquire()函数只要你有CONFIG_I2C_EXCLUSIVE_OPEN设置为1。我假设你有包括dg_configI2C_ADAPTER和dg_config_USE_HW_I2C custom_config_qspi。h文件,您还可以配置了相应的针的适当的i2c functionallity periph_setup()函数?为例。

hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_6、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_I2C_SCL);
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_7、HW_GPIO_MODE_INPUT HW_GPIO_FUNC_I2C_SDA);

也我不得到任何线索的捕捉,我不该看到的东西会表明一个i2c事务已经开始,我不看到你的地址设置为设备或任何表明交互已经开始。

由于MT_dialog

肯庄
离线
最后看到:2年9个月前
加入:2016-10-15 05:40
当然我们也设置

当然我们有设置如下,我会有问题吗如果我修改针端口3 _5(时钟)和1 _2 (SDA) ?唯一的不同是我修改pxp_reporter项目添加下面的代码在c函数“periph_init”

#定义dg_configUSE_HW_I2C (1)
#定义dg_configI2C_ADAPTER (1)

#定义CFG_DEMO_HW_I2C (1)

#如果CFG_DEMO_HW_I2C | | CFG_AD_I2C_1
/ * I2C1 * /
#定义CFG_GPIO_I2C1_SCL_PORT (HW_GPIO_PORT_3)
#定义CFG_GPIO_I2C1_SCL_PIN (HW_GPIO_PIN_5)
#定义CFG_GPIO_I2C1_SDA_PORT (HW_GPIO_PORT_1)
#定义CFG_GPIO_I2C1_SDA_PIN (HW_GPIO_PIN_2)
# endif

#如果CFG_DEMO_HW_I2C
/ * I2C * /
hw_gpio_set_pin_function (CFG_GPIO_I2C1_SCL_PORT CFG_GPIO_I2C1_SCL_PIN、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_I2C_SCL);
hw_gpio_set_pin_function (CFG_GPIO_I2C1_SDA_PORT CFG_GPIO_I2C1_SDA_PIN、HW_GPIO_MODE_INPUT HW_GPIO_FUNC_I2C_SDA);
hw_gpio_configure_pin (CFG_GPIO_TFT_RES_PORT CFG_GPIO_TFT_RES_PIN、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_GPIO, 1);
hw_gpio_configure_pin (CFG_GPIO_TQ_PORT CFG_GPIO_TQ_PIN、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_GPIO, 1);
demo_i2c_init ();
# endif

MT_dialog
离线
最后看到:2个月3周前
工作人员
加入:2015-06-08 34
嗨,肯庄,

嗨,肯庄,

如果您使用的是QFN包有一个港口3你应该好了。因为你使用的是祝福项目尝试做以下,我假设使用ble_adv示例将更有效,因为这是一个简单的例子:

  • 配置针我上面提到的(只是调用hw_gpio_set_pin_function()所需的别针和functionallities)。
  • demo_i2c_init()不是因为配置适配器将应用的必要性在总线aquirement(因为你有使用I2C_SLAVE_DEVICE宏)。
  • 循环前的祝福任务(ble_adv_demo_task在我的例子中)您可以应用下面的代码:
  • dev = ad_i2c_open (SSD1306);/ /打开I2C设备
    ad_i2c_write (dev addr 1);/ /执行一个字节写
    ad_i2c_read (dev,及地址,1);/ /执行一个字节读
  • 即使没有沟通与外围,I2C总线上的设备地址设置为你的外围应该出现即使设备不是总线上的另一边。

所以请试着上面没有I2C外围连接,并检查是否至少的68 x将地址总线上的设备。

由于MT_dialog

peter.de.nijs@loqed
离线
最后看到:3年2个月前
加入:2017-10-20 14:32
我使用de SSD1306

我使用de SSD1306
没有华丽的动画。
你能提供给我一个自由运行DA1468x移植吗?

会节省我的时间:)

关于
Peter de Nijs