在线时间158 小时
UID3963739
注册时间2024-3-27
NXP金币418
TA的每日心情 | 奋斗 2024-12-9 14:23 |
---|
签到天数: 204 天 连续签到: 1 天 [LV.7]常住居民III
金牌会员
 
- 积分
- 1143
- 最后登录
- 2025-3-12
|
目前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接口,具体可以从针脚图看到,下图红框处的针脚。
NXP引入了一个Flexcomm概念,每个Flexcomm接口可通过软件选择作为USART、SPI或I2C接口。此处只需要在menuconfig中选择I2C0即可。
因为FRDM-MCXA153的BSP目前只有pin和Uart的驱动,需要增加drv_i2c.c文件,直接从已有的BSP(如N947)拷贝过来,同时修改baud、clock_attach_id、clock_div_name初始化值。
再修改pin mux的配置,首先在BOARD_InitPins函数中增加I2C0 reset实现:
- RESET_ReleasePeripheralReset(kLPI2C0_RST_SHIFT_RSTn);
复制代码
同时加上I2C0的SDA/SCL针脚初始化代码:
- 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无需修改。
上述内容设置好之后,选择保存。分别执行下述2个命令:
pkgs —update
scons —target=mdk5
待Keil工程生成后,打开工程编译程序。
- 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开发板上。
三、硬件IIC测试
固件下载完成后,reset系统,还是熟悉的味道。
- \ | /
- - 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已经起来:
- msh >list device
- device type ref count
- -------- -------------------- ----------
- i2c0 I2C Bus 0
- pin Pin Device 0
- uart0 Character Device 2
- msh >
复制代码
因为之前在menuconfig选择ssd1306的时候同时选择了demo,跑起来。
至此,基于RT-Thread的硬件IIC驱动适配完成。
|
|