Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
【NXP-MCXA153】恩智浦A153上的 IIC(硬件) 实践
发布于 2024-07-20 17:35:09 浏览:302
订阅该版
[tocm] 本文主要基于恩智浦FRDM--MCXA153开发板 X RT-Thread,测试IIC(硬件) 功能以及SSD1306 OLED。 # 一、硬件介绍 ## (一)FRDM-MCXA153 FRDM-MCXA153是一款紧凑且可扩展的开发板,可快速基于MCX A14和A15 MCU开展原型设计。它们提供行业标准的接口,可轻松访问MCU的I/O、集成的开放标准串行接口、外部闪存和板载MCU-Link调试器。 ![1531.png](https://oss-club.rt-thread.org/uploads/20240720/41e4e6836e62cbeaa1882663e77114ff.png.webp) 通过MCUXpresso Developer Experience(MCUXpresso开发人员体验)提供其他工具,如面向附加板的扩展板中心和面向软件示例的应用代码中心。 ![1530.png](https://oss-club.rt-thread.org/uploads/20240720/01c341193e4df7acda9ed9375610771f.png.webp) ## (二)SSD1306 OLED SSD1306是一款单片CMOS OLED/PLED驱动器,具有有机/聚合物发光控制器二极管点阵图形显示系。SSD1306内置对比度控制、显示RAM和振荡器,减少了外部组件和功耗。它有256级亮度控制。数据/命令是从通用单片机通过硬件可选的6800/8000系列兼容并行接口发送,I2C接口或串行外围接口。它适用于许多紧凑型便携式应用程序,例如手机副显示屏、MP3播放器、计算器等。 ![SSD1306.png](https://oss-club.rt-thread.org/uploads/20240720/474633b4aceec70e6461fad2857ff924.png.webp) # 二、工程创建 目前RT-Thread Studio尚未支持恩智浦FRDM-MCXA153开发板BSP,需要从gitee下载最新的主线,通过scons命令创建工程。下载好主线源码后,在rt-thread\bsp\nxp\mcx\mcxa\frdm-mcxa153 目录下打开scons环境,配置IIC驱动和SSD1306 OLED。 ## (一)IIC配置 恩智浦FRDM-MCXA153开发板板载的mikroBUS socket预留一个IIC接口,具体可以从针脚图看到,下图红框处的针脚。 ![1532.png](https://oss-club.rt-thread.org/uploads/20240720/5907e59f0aaad017af85b710f411a3d3.png.webp) NXP引入了一个Flexcomm概念,每个Flexcomm接口可通过软件选择作为USART、SPI或I2C接口。此处只需要在menuconfig中选择I2C0即可。 ![1534.png](https://oss-club.rt-thread.org/uploads/20240720/6b5a1dd40d83b57346ead7f70565272a.png.webp) 因为FRDM-MCXA153的BSP目前只有pin和Uart的驱动,需要增加drv_i2c.c文件,直接从已有的BSP(如N947)拷贝过来,同时修改baud、clock_attach_id、clock_div_name初始化值。 ![1535.png](https://oss-club.rt-thread.org/uploads/20240720/6e405be2a198d0f5d394be1b2a4dfb13.png.webp) 再修改pin mux的配置,首先在BOARD_InitPins函数中增加I2C0 reset实现: ```c RESET_ReleasePeripheralReset(kLPI2C0_RST_SHIFT_RSTn); ``` 同时加上I2C0的SDA/SCL针脚初始化代码: ```c 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); ``` ## (二)SSD1306 OLED配置 在menuconfig中选择enable SSD1306,并且设置好I2C bus name,I2C的地址默认是0x3c无需修改。 ![1536.png](https://oss-club.rt-thread.org/uploads/20240720/2dc12ff3f6c41baf624d90bee429373b.png) 上述内容设置好之后,选择保存。分别执行下述2个命令: pkgs —update scons —target=mdk5 待Keil工程生成后,打开工程编译程序。 ```c Program Size: Code=79916 RO-data=24408 RW-data=768 ZI-data=7700 Finished: 0 information, 2 warning and 0 error messages. ".\build\rtthread.axf" - 0 Error(s), 2 Warning(s). Build Time Elapsed: 00:00:12 ``` 然后下载到恩智浦FRDM-MCXA153开发板上。 ![1537.png](https://oss-club.rt-thread.org/uploads/20240720/8d10b12b527f0b4c0ad868a70639e7e4.png.webp) # 三、IIC测试 固件下载完成后,reset系统,还是熟悉的味道。 ```c \ | / - RT - Thread Operating System / | \ 5.2.0 build Jul 17 2024 23:16:53 2006 - 2024 Copyright by RT-Thread team I/I2C: I2C bus [i2c0] registered using armclang, version: 6180002 MCXA153 HelloWorld msh > ``` list device后,可以看到IIC已经起来: ```c msh >list device device type ref count -------- -------------------- ---------- i2c0 I2C Bus 0 pin Pin Device 0 uart0 Character Device 2 msh > ``` 因为之前在menuconfig选择ssd1306的时候同时选择了demo,跑起来。 ![1538.jpg](https://oss-club.rt-thread.org/uploads/20240720/964f3966a2721e97f39a05e8cc9b56c0.jpg.webp) [收工]
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Juggernaut
①②③
文章
8
回答
109
被采纳
6
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部