0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用nRFF54L15初始化一个SPI

TedLee 来源:jf_29076475 作者:jf_29076475 2025-06-27 14:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【NCS随笔】
NCS使用了Zyphyr操作系统,以及设备树的概念,所以有许多客户对于不了解,今天copy一个SPI初始化的例程,给读者看

Nordic官方课程

官方已经写了一个SPI的课程,写的挺详细的可以,也可以看这个课程
https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-5-serial-peripheral-interface-spi/topic/exercise-1-10/

配置宏定义

在 prj.conf 使能SPI
CONFIG_SPI=y

添加overlay

新建一个nrf5l15dk_nrf54l15_cpuapp.overlay

添加需要的内容

&pinctrl {
	spi22_default_alt: spi22_default_alt {
		group1 {
			psels = < NRF_PSEL(SPIM_SCK, 1, 12) >,
				 NRF_PSEL(SPIM_MISO, 1, 10) >,
				 NRF_PSEL(SPIM_MOSI, 1, 8) >;
		};
	};

	spi22_sleep_alt: spi22_sleep_alt {
		group1 {
			psels = < NRF_PSEL(SPIM_SCK, 1, 12) >,
			 NRF_PSEL(SPIM_MISO, 1, 10) >,
			 NRF_PSEL(SPIM_MOSI, 1, 8) >;
			low-power-enable;
		};
	};

};

&gpio2 {
	status = "okay";
};

&spi22 {
	status = "okay";
	pinctrl-0 = < &spi22_default_alt >;
	pinctrl-1 = < &spi22_sleep_alt >;
	pinctrl-names = "default", "sleep";
	overrun-character = < 0x00 >;
	cs-gpios = < &gpio1 14 GPIO_ACTIVE_LOW >;
	easydma-maxcnt-bits = < 0x400 >;
	dut_spi_dt: test-spi-dev@0 {
		compatible = "vnd,spi-device";
		reg = < 0 >;
		spi-max-frequency = < 8000000 >;
	};
};

main函数

/* SPI 描述结构体 */
#define SPI_OP	(SPI_WORD_SET(8)|SPI_TRANSFER_MSB)
#define SPIM_OP	 (SPI_OP_MODE_MASTER | SPI_TRANSFER_MSB |SPI_WORD_SET(8))
static struct spi_dt_spec spim = SPI_DT_SPEC_GET(DT_NODELABEL(dut_spi_dt), SPIM_OP, 0);





/**
 * @brief st7735发送命令
 */
static void st7735_send_command(uint8_t command)
{
   // TFT_DC_COMMAND;
    struct spi_buf tx_spi_buf = { .buf = (void *)&command, .len = 1 };
    struct spi_buf_set tx_spi_buf_set = {.buffers = &tx_spi_buf, .count = 1 };
    int ret = spi_write_dt(&spim, &tx_spi_buf_set);
    if (ret < 0) {
        LOG_ERR("SPI write data failed: %d", ret);
    }
}

int main(void)
{
	printf("Hello World! %sn", CONFIG_BOARD_TARGET);

	/* 检查设备是否准备好 */
    if (!spi_is_ready_dt(&spim)) {
        LOG_ERR("spi is not ready");
        return false;
    }

	while (1)
	{
		st7735_send_command(0x55);
		k_sleep(K_MSEC(500));
		printf("mr_st7735_send_command:0x55n");
	}
	
	return 0;
}

逻辑分析仪显示数据没有问题

image.png

使用nRFX库

还有一个使用旧的nRF52_SDK库的办法,可以绕过zephyr的设备树和API,其实zephyr底层也是调用nRF库

宏配置

CONFIG_NRFX_SPIM22=y

&spi22 {
    status = "okay";
    compatible = "nordic,nrf-spim";
    pinctrl-0 = < &spi_dummy >;
};
最后一如既往的到了臭不要脸环节,作为一名精通Nordic硬件设计和软件开发的FAE,你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1093

    浏览量

    51188
  • Nordic
    +关注

    关注

    9

    文章

    238

    浏览量

    48764
  • Zephyr
    +关注

    关注

    0

    文章

    47

    浏览量

    6511
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NRF54L15的NORDIC芯片,adc的内部参考电压

    步确认: 关键补充说明 参数可靠性来源 技术实践验证:开发者在使用 Zephyr API 或 nrfx 驱动初始化 NRF54L15 的 ADC 时,明确标注内部参考电压为 0.9V,且需
    发表于 11-17 15:46

    nRF54L15初始化SPI

    、以下是基于NCS3.0.2的SPI初始化示例 1.1、主机 设备树 此配置将 SPI21 配置为主机,SCK/MOSI/MISO/CS 分别对应 P1.8/P1.12/P1.11/
    发表于 08-26 00:31

    GraniStudio:IO初始化以及IO资源配置例程

    IO资源配置.gsp文件,点击打开,完成导入。 2.功能说明 实现连接格拉尼控制器IO块以及配置输入输出IO点。 2.1通过初始化IO算子连接格拉尼控制器IO块,导入工程自动进行连接。 2.2 通过IO配置算子输出配置的IO表。 第次使用GS软件时操作步骤如下: (1)
    的头像 发表于 08-22 17:34 745次阅读
    GraniStudio:IO<b class='flag-5'>初始化</b>以及IO资源配置例程

    GraniStudio:初始化例程

    说明 通过初始化运控板卡算子连接格拉尼总线型运控卡,导入工程自动进行连接,此算子为使用运控控制板卡的第项操作,后续运控算子需引用其输出板卡对象才可使用。 3.异常处理 当手动执行初始化运控板卡算子出现错误时: 查看总线卡与驱动
    的头像 发表于 08-22 16:45 700次阅读
    GraniStudio:<b class='flag-5'>初始化</b>例程

    定义IO初始化结构体

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义IOPORT初始化的结构体类型IOPORT_Init_t,它的成
    的头像 发表于 07-16 16:26 1105次阅读

    nRF54L15 # 超低功耗无线 SoC

    nRF54L15 概述 *附件:nRF54L15_nRF54L10_nRF54L05_Preliminary_Datasheet_v0.9.pdf 特征 128 MHz Arm Cortex-M33
    的头像 发表于 07-01 16:57 2701次阅读
    nRF<b class='flag-5'>54L15</b> # 超低功耗无线 SoC

    nRF54L15如何初始化GRTC

    保持计时功能。这种无缝切换机制确保了系统在各种工作状态下都能维持精确的时间基准。 超高精度与超长计时范围 凭借 52 位的计数器宽度和 1 微秒的分辨率,GRTC 创造了令人惊叹的计时能力。理论上,它可以连续运行 142 年才会发生计数器溢出,这特性使其特别适合需
    的头像 发表于 06-30 09:39 536次阅读

    PTR54L15系列低功耗无线多协议模组

    PTR54L15系列多协议无线模组,基于Nordic新代nRF54L15平台打造,以超低功耗、高性能和多协议支持为核心,为智能家居、工业自动、可穿戴设备等场景提供了
    发表于 06-28 21:23

    IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案

    、过载保护机制与界面初始化的关联基础 IM 系列设备的过载保护机制是保障设备安全运行的核心功能,其通过传感器实时采集设备运行参数,如电流、电压、温度、系统资源占用率等。旦这些参数超出预设阈值
    的头像 发表于 06-27 09:58 358次阅读

    PTR54L15:专为AIoT应用设计的革命性低功耗无线多协议模组

    PTR54L15系列无线模组,基于Nordic新代nRF54L15 SoC平台,集超低功耗、多协议支持、高性能边缘计算于体,为智能家居、工业自动
    的头像 发表于 06-24 11:16 646次阅读

    SD卡初始化初始化后再次初始化时会失败,是什么原因?怎么解决?

    使用的是stm32F407驱动32G的tf卡,使用的SPI模式。第次上电时,卡识别初始化能通过,但是再keil调试时复位,再运行到
    发表于 06-20 07:21

    深入比较nRF52832和Nordic新的产品nRF54L15参数对比

    的:nRF54L15是Nordic最新的BLE芯片,它由nRF52832升级而来用以下表格做一个参数的对比 型号 nRF52832 nRF54L15 内核 Contex -M4 Contex -M33&
    发表于 03-26 22:28

    深入比较nRF52832和Nordic新的产品nRF54L15参数对比

    的:nRF54L15是Nordic最新的BLE芯片,它由nRF52832升级而来 用以下表格做一个参数的对比 型号 nRF52832 nRF54L15 内核 Contex -M4 Contex -M33&
    发表于 03-10 23:54

    AFE5805是否需要初始化,是不是不通过SPI接口初始化芯片就发热比较严重?

    请问下AFE5805是否需要初始化,是不是不通过SPI接口初始化芯片就发热比较严重?
    发表于 01-14 07:28

    STM32F407 MCU使用SD NAND 不断电初始化失效解决方案

    STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专业的解决方案。
    的头像 发表于 12-11 10:51 1476次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案