【NCS隨筆】
NCS使用了Zyphyr操作系統(tǒng),以及設(shè)備樹的概念,所以有許多客戶對(duì)于不了解,今天copy一個(gè)SPI初始化的例程,給讀者看
Nordic官方課程
官方已經(jīng)寫了一個(gè)SPI的課程,寫的挺詳細(xì)的可以,也可以看這個(gè)課程
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
新建一個(gè)nrf5l15dk_nrf54l15_cpuapp.overlay
添加需要的內(nèi)容
&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函數(shù)
/* SPI 描述結(jié)構(gòu)體 */
#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發(fā)送命令
*/
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);
/* 檢查設(shè)備是否準(zhǔn)備好 */
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;
}
邏輯分析儀顯示數(shù)據(jù)沒有問題
使用nRFX庫
還有一個(gè)使用舊的nRF52_SDK庫的辦法,可以繞過zephyr的設(shè)備樹和API,其實(shí)zephyr底層也是調(diào)用nRF庫
宏配置
CONFIG_NRFX_SPIM22=y
&spi22 {
status = "okay";
compatible = "nordic,nrf-spim";
pinctrl-0 = < &spi_dummy >;
};
最后一如既往的到了臭不要臉環(huán)節(jié),作為一名精通Nordic硬件設(shè)計(jì)和軟件開發(fā)的FAE,你的點(diǎn)贊、收藏和評(píng)論是對(duì)我最大的支持,有問題多多指教,如果有需要Nordic開發(fā)板、Nordic的芯片以及Nordic技術(shù)支持的可以在個(gè)人資料獲取我的聯(lián)系方式,感謝讀者支持!
審核編輯 黃宇
-
SDK
+關(guān)注
關(guān)注
3文章
1076瀏覽量
48063 -
Nordic
+關(guān)注
關(guān)注
9文章
209瀏覽量
48078 -
Zephyr
+關(guān)注
關(guān)注
0文章
37瀏覽量
6276
發(fā)布評(píng)論請(qǐng)先 登錄
nRF54L15 # 超低功耗無線 SoC

nRF54L15如何初始化GRTC
PTR54L15系列低功耗無線多協(xié)議模組
IM 系列設(shè)備過載保護(hù)機(jī)制下界面初始化中斷的底層邏輯與解決方案
PTR54L15:專為AIoT應(yīng)用設(shè)計(jì)的革命性低功耗無線多協(xié)議模組
SD卡初始化第一次初始化后再次初始化時(shí)會(huì)失敗,是什么原因?怎么解決?
深入比較nRF52832和Nordic新的產(chǎn)品nRF54L15參數(shù)對(duì)比
深入比較nRF52832和Nordic新的產(chǎn)品nRF54L15參數(shù)對(duì)比
AFE5805是否需要初始化,是不是不通過SPI接口初始化芯片就發(fā)熱比較嚴(yán)重?
STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

ADS54J60初始化無效,輸出亂碼怎么解決?
基于旋轉(zhuǎn)平移解耦框架的視覺慣性初始化方法

TMS320C6000 McBSP初始化

如何在i.MX RT微控制器上初始化LWIP協(xié)議棧

評(píng)論