【NCS随笔】nRF54L15初始化一个SPI

【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! %s\n", 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:0x55\n");
	}
	
	return 0;
}

使用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技术支持的可以在个人资料获取我的联系方式,感谢读者支持!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值