【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 使能SPICONFIG_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;
}
逻辑分析仪显示数据没有问题

使用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
+关注
关注
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)
GraniStudio:初始化例程
说明 通过初始化运控板卡算子连接格拉尼总线型运控卡,导入工程自动进行连接,此算子为使用运控控制板卡的第一项操作,后续运控算子需引用其输出板卡对象才可使用。 3.异常处理 当手动执行初始化运控板卡算子出现错误时: 查看总线卡与驱动
定义IO初始化结构体
由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构体类型IOPORT_Init_t,它的成
nRF54L15 # 超低功耗无线 SoC
nRF54L15 概述 *附件:nRF54L15_nRF54L10_nRF54L05_Preliminary_Datasheet_v0.9.pdf 特征 128 MHz Arm Cortex-M33
nRF54L15如何初始化GRTC
保持计时功能。这种无缝切换机制确保了系统在各种工作状态下都能维持精确的时间基准。 超高精度与超长计时范围 凭借 52 位的计数器宽度和 1 微秒的分辨率,GRTC 创造了令人惊叹的计时能力。理论上,它可以连续运行 142 年才会发生计数器溢出,这一特性使其特别适合需
PTR54L15系列低功耗无线多协议模组
PTR54L15系列多协议无线模组,基于Nordic新一代nRF54L15平台打造,以超低功耗、高性能和多协议支持为核心,为智能家居、工业自动化、可穿戴设备等场景提供了
发表于 06-28 21:23
IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案
一、过载保护机制与界面初始化的关联基础 IM 系列设备的过载保护机制是保障设备安全运行的核心功能,其通过传感器实时采集设备运行参数,如电流、电压、温度、系统资源占用率等。一旦这些参数超出预设阈值
PTR54L15:专为AIoT应用设计的革命性低功耗无线多协议模组
PTR54L15系列无线模组,基于Nordic新一代nRF54L15 SoC平台,集超低功耗、多协议支持、高性能边缘计算于一体,为智能家居、工业自动
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
STM32F407 MCU使用SD NAND 不断电初始化失效解决方案
STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专业的解决方案。

使用nRFF54L15初始化一个SPI
评论