当前位置: 首页 > news >正文

石碣网站建设怎么看网站关键词排名

石碣网站建设,怎么看网站关键词排名,数字创意设计包括哪些方面,互联网内容服务商有哪些介绍 ‌I2C总线由飞利浦公司开发,是一种串行单工通信总线,它主要用于连接微控制器和其他外围设备并在总线上的器件之间传送信息(需要指定设备地址);常见的i2c设备有EEPROM、触摸屏、各种IoT传感器、时钟模块等&#x…

介绍

‌I2C总线由飞利浦公司开发,是一种串行单工通信总线,它主要用于连接微控制器和其他外围设备并在总线上的器件之间传送信息(需要指定设备地址);常见的i2c设备有EEPROM、触摸屏、各种IoT传感器、时钟模块等,通常由两根线组成:SCL和SDA,使用时需要接上拉电阻,常见的通信速率为100k和400k

移植流程

以i2c0为例

① 在board里边添加相应的外设:配置i2c0外设为复位状态、设置GPIO引脚功能

② 添加相应的Kconfig开关,用以指示相应的外设开启与关闭(本质是通过宏定义或者条件编译的方式)

③ 根据SDK_2_14_2_FRDM-MCXA153提供的i2c示例工程编写i2c总线驱动,需要实现2个关键的函数

  • lpc_i2c_xfer
  • rt_hw_i2c_init

④ 添加相应的库文件依赖:fsl_lpi2c.c、fsl_lpi2c_edma.c

开发板引脚对应关系

序号GPIOfunction
1P3_27SCL
2P3_28SDA

驱动文件

pin_mux.c

BOARD_InitPins函数里加入以下代码

#ifdef BSP_USING_I2C0													const port_pin_config_t port3_27_pin34_config = {/* Internal pull-up resistor is enabled */kPORT_PullUp,/* Low internal pull resistor value is selected. */kPORT_LowPullResistor,/* Fast slew rate is configured */kPORT_FastSlewRate,/* Passive input filter is disabled */kPORT_PassiveFilterDisable,/* Open drain output is enabled */kPORT_OpenDrainEnable,/* Low drive strength is configured */kPORT_LowDriveStrength,/* Normal drive strength is configured */kPORT_NormalDriveStrength,/* Pin is configured as LPI2C0_SCL */kPORT_MuxAlt2,/* Digital input enabled */kPORT_InputBufferEnable,/* Digital input is not inverted */kPORT_InputNormal,/* Pin Control Register fields [15:0] are not locked */kPORT_UnlockRegister};/* PORT3_27 (pin 34) is configured as LPI2C0_SCL */PORT_SetPinConfig(PORT3, 27U, &port3_27_pin34_config);const port_pin_config_t port3_28_pin33_config = {/* Internal pull-up resistor is enabled */kPORT_PullUp,/* Low internal pull resistor value is selected. */kPORT_LowPullResistor,/* Fast slew rate is configured */kPORT_FastSlewRate,/* Passive input filter is disabled */kPORT_PassiveFilterDisable,/* Open drain output is enabled */kPORT_OpenDrainEnable,/* Low drive strength is configured */kPORT_LowDriveStrength,/* Normal drive strength is configured */kPORT_NormalDriveStrength,/* Pin is configured as LPI2C0_SDA */kPORT_MuxAlt2,/* Digital input enabled */kPORT_InputBufferEnable,/* Digital input is not inverted */kPORT_InputNormal,/* Pin Control Register fields [15:0] are not locked */kPORT_UnlockRegister};/* PORT3_28 (pin 33) is configured as LPI2C0_SDA */PORT_SetPinConfig(PORT3, 28U, &port3_28_pin33_config);
#endif

board/Kconfig

加入i2c0相关配置

menuconfig BSP_USING_I2Cconfig BSP_USING_I2Cbool "Enable I2C"select RT_USING_I2Cdefault yif BSP_USING_I2Cconfig BSP_USING_I2C0bool "Enable I2C0"default yendif

drv_i2c.c

i2c驱动层修改如下

/** Copyright (c) 2006-2024, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2023-08-17     hywing       The first version*/#include <rtdevice.h>
#include "fsl_lpi2c.h"
#include "fsl_lpi2c_edma.h"
#include "fsl_edma.h"#ifdef RT_USING_I2Cenum
{
#ifdef BSP_USING_I2C0I2C0_INDEX,
#endif
};#define i2c_dbg                 rt_kprintfstruct lpc_i2c_bus
{struct rt_i2c_bus_device    parent;LPI2C_Type                  *I2C;clock_attach_id_t           clock_attach_id;clock_div_name_t            clock_div_name;clock_name_t                clock_src;uint32_t                    baud;char                        *name;
};struct lpc_i2c_bus lpc_obj[] =
{
#ifdef BSP_USING_I2C0{.I2C = LPI2C0,.baud = 100000U,.clock_attach_id = kFRO12M_to_LPI2C0,.clock_div_name = kCLOCK_DivLPI2C0,.clock_src = kCLOCK_Fro12M,.name = "i2c0",},
#endif
#ifdef BSP_USING_I2C1{.I2C = LPI2C1,.baud = 100000U,.clock_attach_id = kFRO12M_to_FLEXCOMM1,.clock_div_name = kCLOCK_DivFlexcom1Clk,.clock_src = kCLOCK_Fro12M,.name = "i2c1",},
#endif
#ifdef BSP_USING_I2C2{.I2C = LPI2C2,.baud = 100000U,.clock_attach_id = kFRO12M_to_FLEXCOMM2,.clock_div_name = kCLOCK_DivFlexcom2Clk,.clock_src = kCLOCK_Fro12M,.name = "i2c2",},
#endif
};static rt_ssize_t lpc_i2c_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num)
{struct rt_i2c_msg *msg;lpi2c_master_transfer_t xfer = {0};rt_uint32_t i;rt_ssize_t ret = 0;struct lpc_i2c_bus *lpc_i2c = (struct lpc_i2c_bus *)bus;for (i = 0; i < num; i++){msg = &msgs[i];if (msg->flags & RT_I2C_RD){xfer.slaveAddress = msg->addr;xfer.direction = kLPI2C_Read;xfer.subaddress = 0;xfer.subaddressSize = 0;xfer.data = msg->buf;xfer.dataSize = msg->len;if(i != 0)xfer.flags = kLPI2C_TransferRepeatedStartFlag;elsexfer.flags = kLPI2C_TransferDefaultFlag;if (LPI2C_MasterTransferBlocking(lpc_i2c->I2C, &xfer) != kStatus_Success){i2c_dbg("i2c bus read failed!\n");return i;}}else{xfer.slaveAddress = msg->addr;xfer.direction = kLPI2C_Write;xfer.subaddress = 0;xfer.subaddressSize = 0;xfer.data = msg->buf;xfer.dataSize = msg->len;if(i == 0)xfer.flags = kLPI2C_TransferNoStopFlag;elsexfer.flags = kLPI2C_TransferDefaultFlag;if (LPI2C_MasterTransferBlocking(lpc_i2c->I2C, &xfer) != kStatus_Success){i2c_dbg("i2c bus write failed!\n");return i;}}}ret = i;return ret;
}static const struct rt_i2c_bus_device_ops i2c_ops =
{lpc_i2c_xfer,RT_NULL,RT_NULL
};int rt_hw_i2c_init(void)
{int i;lpi2c_master_config_t masterConfig;for(i=0; i<ARRAY_SIZE(lpc_obj); i++){CLOCK_SetClockDiv(lpc_obj[i].clock_div_name, 1u);CLOCK_AttachClk(lpc_obj[i].clock_attach_id);LPI2C_MasterGetDefaultConfig(&masterConfig);masterConfig.baudRate_Hz = lpc_obj[i].baud;LPI2C_MasterInit(lpc_obj[i].I2C, &masterConfig, /*CLOCK_GetFreq(lpc_obj[i].clock_src)*/CLOCK_GetLpi2cClkFreq());lpc_obj[i].parent.ops = &i2c_ops;rt_i2c_bus_device_register(&lpc_obj[i].parent, lpc_obj[i].name);}return RT_EOK;
}
INIT_DEVICE_EXPORT(rt_hw_i2c_init);#endif /* RT_USING_I2C */

SConscript

Libraries/MCXA153/SConscript文件里边加上以下代码

if GetDepend('BSP_USING_I2C'):src += ['MCXA153/drivers/fsl_lpi2c.c']src += ['MCXA153/drivers/fsl_lpi2c_edma.c']

测试用例

打开使能i2c0驱动

在这里插入图片描述

使能ssd1306模块并连接SCL(P3_27)、SDA(P3_28)引脚

在这里插入图片描述
拉取更新软件包,并导出MDK5工程

pkgs --update
scons --target=mdk5

在msh终端输入ssd1306_TestAll,屏幕输出效果如下,说明i2c BSP驱动已经正确移植

在这里插入图片描述

http://www.yayakq.cn/news/285805/

相关文章:

  • 乡土文化网站怎么做菜鸟如何做网站
  • 没有备案的网站怎么挂广告可以做h5网站
  • 如何把网站程序做授权网址访问凡客建站
  • 深圳网站设计收费标准中企动力近期做的网站
  • 傻瓜式网站建设软件有哪些做暧暧小视频有声音的网站
  • 网站蜘蛛记录学做网站多久能学会
  • 建设拍卖网站工程交易服务主页
  • ui设计做兼职的网站莱芜都市网app
  • 可以做网站引导页的页面江苏网站seo平台
  • 网站建设服务范围下沙建设局网站
  • 网站未做安全隐患检测怎么拿shell网站的后缀名
  • 网站做百度地图定位广东东莞人才招聘网
  • wordpress 站点打开慢南京网页搜索排名提升
  • 盐城网站建设网站制作推广六安搜索引擎优化方法
  • 报名网站建设价格电子商务就业前景
  • 石家庄网站建设加q.479185700天天seo站长工具
  • 做pc端网站行情专业做网站安全的sine安
  • 最专业的手机网站建设在哪里打广告效果最好
  • 沙田仿做网站成都抢先看新钱新闻全搜索
  • 企业网站模板设计wordpress新建php页面模板
  • 字体设计学习网站网站各个阶段推广
  • 网站建设及推广图片wordpress影视主题下载失败
  • 徐州盛大图文网站网站集约化建设方案
  • 网站建设找谁好微信小程序游戏开发多少钱
  • 顺德网站建设报价专业新站整站快速排名公司
  • 江宁网站建设公司wep开发和网站开发
  • 郑州个人做网站专业微网站建设公司首选公司哪家好
  • 益阳seo网站建设wordpress文章加预览图
  • vscode的网站开发配置seo关键词优化外包公司
  • 苏州模板建站平台国字型布局网站