diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 263d9f6..79227f7 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -4,6 +4,11 @@ "name": "nrf52833_xxaa", "includePath": [ "libznordic\\include", + "sdk/external/fatfs/src/", + "sdk/external/fatfs/src/", + "sdk/external/fatfs/port/", + "sdk/components/libraries/block_dev/sdc/", + "sdk/components/libraries/block_dev/", "sdk\\config", "app\\src", "sdk\\components", diff --git a/.vscode/settings.json b/.vscode/settings.json index 6d86b83..876ea80 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -42,6 +42,10 @@ "ble_srv_common.h": "c", "zdatachannel_service.h": "c", "ble_link_ctx_manager.h": "c", - "nrf_drv_saadc.h": "c" + "nrf_drv_saadc.h": "c", + "project_cfg.h": "c", + "nrf_block_dev_sdc.h": "c", + "nrf_drv_pwm.h": "c", + "nrfx_config.h": "c" } } \ No newline at end of file diff --git a/app/app.uvoptx b/app/app.uvoptx index 15fd958..b13ae18 100644 --- a/app/app.uvoptx +++ b/app/app.uvoptx @@ -823,6 +823,18 @@ 0 0 + + 7 + 35 + 1 + 0 + 0 + 0 + ..\sdk\modules\nrfx\drivers\src\nrfx_pwm.c + nrfx_pwm.c + 0 + 0 + @@ -833,7 +845,7 @@ 0 8 - 35 + 36 1 0 0 @@ -845,7 +857,7 @@ 8 - 36 + 37 1 0 0 @@ -857,7 +869,7 @@ 8 - 37 + 38 1 0 0 @@ -869,7 +881,7 @@ 8 - 38 + 39 1 0 0 @@ -881,7 +893,7 @@ 8 - 39 + 40 1 0 0 @@ -893,7 +905,7 @@ 8 - 40 + 41 1 0 0 @@ -905,7 +917,7 @@ 8 - 41 + 42 1 0 0 @@ -917,7 +929,7 @@ 8 - 42 + 43 1 0 0 @@ -929,7 +941,7 @@ 8 - 43 + 44 1 0 0 @@ -941,7 +953,7 @@ 8 - 44 + 45 1 0 0 @@ -953,7 +965,7 @@ 8 - 45 + 46 1 0 0 @@ -965,7 +977,7 @@ 8 - 46 + 47 1 0 0 @@ -977,7 +989,7 @@ 8 - 47 + 48 1 0 0 @@ -989,7 +1001,7 @@ 8 - 48 + 49 1 0 0 @@ -1001,7 +1013,7 @@ 8 - 49 + 50 1 0 0 @@ -1013,7 +1025,7 @@ 8 - 50 + 51 1 0 0 @@ -1025,7 +1037,7 @@ 8 - 51 + 52 1 0 0 @@ -1037,7 +1049,7 @@ 8 - 52 + 53 1 0 0 @@ -1049,7 +1061,7 @@ 8 - 53 + 54 1 0 0 @@ -1061,7 +1073,7 @@ 8 - 54 + 55 1 0 0 @@ -1073,7 +1085,7 @@ 8 - 55 + 56 1 0 0 @@ -1085,7 +1097,7 @@ 8 - 56 + 57 1 0 0 @@ -1097,7 +1109,7 @@ 8 - 57 + 58 1 0 0 @@ -1109,7 +1121,7 @@ 8 - 58 + 59 1 0 0 @@ -1121,7 +1133,7 @@ 8 - 59 + 60 1 0 0 @@ -1131,17 +1143,41 @@ 0 0 + + 8 + 61 + 1 + 0 + 0 + 0 + ..\sdk\components\libraries\block_dev\sdc\nrf_block_dev_sdc.c + nrf_block_dev_sdc.c + 0 + 0 + + + 8 + 62 + 1 + 0 + 0 + 0 + ..\sdk\components\libraries\sdcard\app_sdcard.c + app_sdcard.c + 0 + 0 + nRF_Log - 1 + 0 0 0 0 9 - 60 + 63 1 0 0 @@ -1153,7 +1189,7 @@ 9 - 61 + 64 1 0 0 @@ -1165,7 +1201,7 @@ 9 - 62 + 65 1 0 0 @@ -1177,7 +1213,7 @@ 9 - 63 + 66 1 0 0 @@ -1189,7 +1225,7 @@ 9 - 64 + 67 1 0 0 @@ -1201,7 +1237,7 @@ 9 - 65 + 68 1 0 0 @@ -1221,7 +1257,7 @@ 0 10 - 66 + 69 1 0 0 @@ -1233,7 +1269,7 @@ 10 - 67 + 70 1 0 0 @@ -1245,7 +1281,7 @@ 10 - 68 + 71 1 0 0 @@ -1265,7 +1301,7 @@ 0 11 - 69 + 72 1 0 0 @@ -1277,7 +1313,7 @@ 11 - 70 + 73 1 0 0 @@ -1289,7 +1325,7 @@ 11 - 71 + 74 1 0 0 @@ -1309,7 +1345,7 @@ 0 12 - 72 + 75 1 0 0 @@ -1322,6 +1358,38 @@ + FATFS + 1 + 0 + 0 + 0 + + 13 + 76 + 1 + 0 + 0 + 0 + ..\sdk\external\fatfs\port\diskio_blkdev.c + diskio_blkdev.c + 0 + 0 + + + 13 + 77 + 1 + 0 + 0 + 0 + ..\sdk\external\fatfs\src\ff.c + ff.c + 0 + 0 + + + + ::CMSIS 0 0 diff --git a/app/app.uvprojx b/app/app.uvprojx index 2136e33..17b1940 100644 --- a/app/app.uvprojx +++ b/app/app.uvprojx @@ -339,7 +339,7 @@ --reduce_paths --diag_suppress=1295 --diag_suppress=1 APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 CONFIG_GPIO_AS_PINRESET FLOAT_ABI_HARD NRF52833_XXAA NRF_SD_BLE_API_VERSION=7 S140 SOFTDEVICE_PRESENT __HEAP_SIZE=2048 __STACK_SIZE=2048 - ..\sdk\config;..\sdk\components;..\sdk\components\ble\ble_advertising;..\sdk\components\ble\ble_dtm;..\sdk\components\ble\ble_link_ctx_manager;..\sdk\components\ble\ble_racp;..\sdk\components\ble\ble_services\ble_ancs_c;..\sdk\components\ble\ble_services\ble_ans_c;..\sdk\components\ble\ble_services\ble_bas;..\sdk\components\ble\ble_services\ble_bas_c;..\sdk\components\ble\ble_services\ble_cscs;..\sdk\components\ble\ble_services\ble_cts_c;..\sdk\components\ble\ble_services\ble_dfu;..\sdk\components\ble\ble_services\ble_dis;..\sdk\components\ble\ble_services\ble_gls;..\sdk\components\ble\ble_services\ble_hids;..\sdk\components\ble\ble_services\ble_hrs;..\sdk\components\ble\ble_services\ble_hrs_c;..\sdk\components\ble\ble_services\ble_hts;..\sdk\components\ble\ble_services\ble_ias;..\sdk\components\ble\ble_services\ble_ias_c;..\sdk\components\ble\ble_services\ble_lbs;..\sdk\components\ble\ble_services\ble_lbs_c;..\sdk\components\ble\ble_services\ble_lls;..\sdk\components\ble\ble_services\ble_nus;..\sdk\components\ble\ble_services\ble_nus_c;..\sdk\components\ble\ble_services\ble_rscs;..\sdk\components\ble\ble_services\ble_rscs_c;..\sdk\components\ble\ble_services\ble_tps;..\sdk\components\ble\common;..\sdk\components\ble\nrf_ble_gatt;..\sdk\components\ble\nrf_ble_qwr;..\sdk\components\ble\peer_manager;..\sdk\components\boards;..\sdk\components\libraries\atomic;..\sdk\components\libraries\atomic_fifo;..\sdk\components\libraries\atomic_flags;..\sdk\components\libraries\balloc;..\sdk\components\libraries\bootloader\ble_dfu;..\sdk\components\libraries\bsp;..\sdk\components\libraries\button;..\sdk\components\libraries\cli;..\sdk\components\libraries\crc16;..\sdk\components\libraries\crc32;..\sdk\components\libraries\crypto;..\sdk\components\libraries\csense;..\sdk\components\libraries\csense_drv;..\sdk\components\libraries\delay;..\sdk\components\libraries\ecc;..\sdk\components\libraries\experimental_section_vars;..\sdk\components\libraries\experimental_task_manager;..\sdk\components\libraries\fds;..\sdk\components\libraries\fifo;..\sdk\components\libraries\fstorage;..\sdk\components\libraries\gfx;..\sdk\components\libraries\gpiote;..\sdk\components\libraries\hardfault;..\sdk\components\libraries\hci;..\sdk\components\libraries\led_softblink;..\sdk\components\libraries\log;..\sdk\components\libraries\log\src;..\sdk\components\libraries\low_power_pwm;..\sdk\components\libraries\mem_manager;..\sdk\components\libraries\memobj;..\sdk\components\libraries\mpu;..\sdk\components\libraries\mutex;..\sdk\components\libraries\pwm;..\sdk\components\libraries\pwr_mgmt;..\sdk\components\libraries\queue;..\sdk\components\libraries\ringbuf;..\sdk\components\libraries\scheduler;..\sdk\components\libraries\sdcard;..\sdk\components\libraries\slip;..\sdk\components\libraries\sortlist;..\sdk\components\libraries\spi_mngr;..\sdk\components\libraries\stack_guard;..\sdk\components\libraries\strerror;..\sdk\components\libraries\svc;..\sdk\components\libraries\timer;..\sdk\components\libraries\twi_mngr;..\sdk\components\libraries\twi_sensor;..\sdk\components\libraries\uart;..\sdk\components\libraries\usbd;..\sdk\components\libraries\usbd\class\audio;..\sdk\components\libraries\usbd\class\cdc;..\sdk\components\libraries\usbd\class\cdc\acm;..\sdk\components\libraries\usbd\class\hid;..\sdk\components\libraries\usbd\class\hid\generic;..\sdk\components\libraries\usbd\class\hid\kbd;..\sdk\components\libraries\usbd\class\hid\mouse;..\sdk\components\libraries\usbd\class\msc;..\sdk\components\libraries\util;..\sdk\components\nfc\ndef\conn_hand_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ac_rec_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ble_oob_advdata_parser;..\sdk\components\nfc\ndef\conn_hand_parser\le_oob_rec_parser;..\sdk\components\nfc\ndef\connection_handover\ac_rec;..\sdk\components\nfc\ndef\connection_handover\ble_oob_advdata;..\sdk\components\nfc\ndef\connection_handover\ble_pair_lib;..\sdk\components\nfc\ndef\connection_handover\ble_pair_msg;..\sdk\components\nfc\ndef\connection_handover\common;..\sdk\components\nfc\ndef\connection_handover\ep_oob_rec;..\sdk\components\nfc\ndef\connection_handover\hs_rec;..\sdk\components\nfc\ndef\connection_handover\le_oob_rec;..\sdk\components\nfc\ndef\generic\message;..\sdk\components\nfc\ndef\generic\record;..\sdk\components\nfc\ndef\launchapp;..\sdk\components\nfc\ndef\parser\message;..\sdk\components\nfc\ndef\parser\record;..\sdk\components\nfc\ndef\text;..\sdk\components\nfc\ndef\uri;..\sdk\components\nfc\platform;..\sdk\components\nfc\t2t_lib;..\sdk\components\nfc\t2t_parser;..\sdk\components\nfc\t4t_lib;..\sdk\components\nfc\t4t_parser\apdu;..\sdk\components\nfc\t4t_parser\cc_file;..\sdk\components\nfc\t4t_parser\hl_detection_procedure;..\sdk\components\nfc\t4t_parser\tlv;..\sdk\components\softdevice\common;..\sdk\components\softdevice\s140\headers;..\sdk\components\softdevice\s140\headers\nrf52;..\sdk\external\fprintf;..\sdk\external\segger_rtt;..\sdk\external\utf_converter;..\sdk\integration\nrfx;..\sdk\integration\nrfx\legacy;..\sdk\modules\nrfx;..\sdk\modules\nrfx\drivers\include;..\sdk\modules\nrfx\hal;.\config\;.\src\;..\libznordic\include + ..\sdk\config;..\sdk\components;..\sdk\components\ble\ble_advertising;..\sdk\components\ble\ble_dtm;..\sdk\components\ble\ble_link_ctx_manager;..\sdk\components\ble\ble_racp;..\sdk\components\ble\ble_services\ble_ancs_c;..\sdk\components\ble\ble_services\ble_ans_c;..\sdk\components\ble\ble_services\ble_bas;..\sdk\components\ble\ble_services\ble_bas_c;..\sdk\components\ble\ble_services\ble_cscs;..\sdk\components\ble\ble_services\ble_cts_c;..\sdk\components\ble\ble_services\ble_dfu;..\sdk\components\ble\ble_services\ble_dis;..\sdk\components\ble\ble_services\ble_gls;..\sdk\components\ble\ble_services\ble_hids;..\sdk\components\ble\ble_services\ble_hrs;..\sdk\components\ble\ble_services\ble_hrs_c;..\sdk\components\ble\ble_services\ble_hts;..\sdk\components\ble\ble_services\ble_ias;..\sdk\components\ble\ble_services\ble_ias_c;..\sdk\components\ble\ble_services\ble_lbs;..\sdk\components\ble\ble_services\ble_lbs_c;..\sdk\components\ble\ble_services\ble_lls;..\sdk\components\ble\ble_services\ble_nus;..\sdk\components\ble\ble_services\ble_nus_c;..\sdk\components\ble\ble_services\ble_rscs;..\sdk\components\ble\ble_services\ble_rscs_c;..\sdk\components\ble\ble_services\ble_tps;..\sdk\components\ble\common;..\sdk\components\ble\nrf_ble_gatt;..\sdk\components\ble\nrf_ble_qwr;..\sdk\components\ble\peer_manager;..\sdk\components\boards;..\sdk\components\libraries\atomic;..\sdk\components\libraries\atomic_fifo;..\sdk\components\libraries\atomic_flags;..\sdk\components\libraries\balloc;..\sdk\components\libraries\bootloader\ble_dfu;..\sdk\components\libraries\bsp;..\sdk\components\libraries\button;..\sdk\components\libraries\cli;..\sdk\components\libraries\crc16;..\sdk\components\libraries\crc32;..\sdk\components\libraries\crypto;..\sdk\components\libraries\csense;..\sdk\components\libraries\csense_drv;..\sdk\components\libraries\delay;..\sdk\components\libraries\ecc;..\sdk\components\libraries\experimental_section_vars;..\sdk\components\libraries\experimental_task_manager;..\sdk\components\libraries\fds;..\sdk\components\libraries\fifo;..\sdk\components\libraries\fstorage;..\sdk\components\libraries\gfx;..\sdk\components\libraries\gpiote;..\sdk\components\libraries\hardfault;..\sdk\components\libraries\hci;..\sdk\components\libraries\led_softblink;..\sdk\components\libraries\log;..\sdk\components\libraries\log\src;..\sdk\components\libraries\low_power_pwm;..\sdk\components\libraries\mem_manager;..\sdk\components\libraries\memobj;..\sdk\components\libraries\mpu;..\sdk\components\libraries\mutex;..\sdk\components\libraries\pwm;..\sdk\components\libraries\pwr_mgmt;..\sdk\components\libraries\queue;..\sdk\components\libraries\ringbuf;..\sdk\components\libraries\scheduler;..\sdk\components\libraries\sdcard;..\sdk\components\libraries\slip;..\sdk\components\libraries\sortlist;..\sdk\components\libraries\spi_mngr;..\sdk\components\libraries\stack_guard;..\sdk\components\libraries\strerror;..\sdk\components\libraries\svc;..\sdk\components\libraries\timer;..\sdk\components\libraries\twi_mngr;..\sdk\components\libraries\twi_sensor;..\sdk\components\libraries\uart;..\sdk\components\libraries\usbd;..\sdk\components\libraries\usbd\class\audio;..\sdk\components\libraries\usbd\class\cdc;..\sdk\components\libraries\usbd\class\cdc\acm;..\sdk\components\libraries\usbd\class\hid;..\sdk\components\libraries\usbd\class\hid\generic;..\sdk\components\libraries\usbd\class\hid\kbd;..\sdk\components\libraries\usbd\class\hid\mouse;..\sdk\components\libraries\usbd\class\msc;..\sdk\components\libraries\util;..\sdk\components\nfc\ndef\conn_hand_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ac_rec_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ble_oob_advdata_parser;..\sdk\components\nfc\ndef\conn_hand_parser\le_oob_rec_parser;..\sdk\components\nfc\ndef\connection_handover\ac_rec;..\sdk\components\nfc\ndef\connection_handover\ble_oob_advdata;..\sdk\components\nfc\ndef\connection_handover\ble_pair_lib;..\sdk\components\nfc\ndef\connection_handover\ble_pair_msg;..\sdk\components\nfc\ndef\connection_handover\common;..\sdk\components\nfc\ndef\connection_handover\ep_oob_rec;..\sdk\components\nfc\ndef\connection_handover\hs_rec;..\sdk\components\nfc\ndef\connection_handover\le_oob_rec;..\sdk\components\nfc\ndef\generic\message;..\sdk\components\nfc\ndef\generic\record;..\sdk\components\nfc\ndef\launchapp;..\sdk\components\nfc\ndef\parser\message;..\sdk\components\nfc\ndef\parser\record;..\sdk\components\nfc\ndef\text;..\sdk\components\nfc\ndef\uri;..\sdk\components\nfc\platform;..\sdk\components\nfc\t2t_lib;..\sdk\components\nfc\t2t_parser;..\sdk\components\nfc\t4t_lib;..\sdk\components\nfc\t4t_parser\apdu;..\sdk\components\nfc\t4t_parser\cc_file;..\sdk\components\nfc\t4t_parser\hl_detection_procedure;..\sdk\components\nfc\t4t_parser\tlv;..\sdk\components\softdevice\common;..\sdk\components\softdevice\s140\headers;..\sdk\components\softdevice\s140\headers\nrf52;..\sdk\external\fprintf;..\sdk\external\segger_rtt;..\sdk\external\utf_converter;..\sdk\integration\nrfx;..\sdk\integration\nrfx\legacy;..\sdk\modules\nrfx;..\sdk\modules\nrfx\drivers\include;..\sdk\modules\nrfx\hal;.\config\;.\src\;..\libznordic\include;..\sdk\external\fatfs\port;..\sdk\external\fatfs\src;..\sdk\components\libraries\block_dev;..\sdk\components\libraries\block_dev\sdc\;..\sdk\external\protothreads\;..\sdk\external\protothreads\pt-1.4\ @@ -1654,6 +1654,11 @@ 1 ..\sdk\modules\nrfx\drivers\src\nrfx_twim.c + + nrfx_pwm.c + 1 + ..\sdk\modules\nrfx\drivers\src\nrfx_pwm.c + @@ -3059,6 +3064,16 @@ + + nrf_block_dev_sdc.c + 1 + ..\sdk\components\libraries\block_dev\sdc\nrf_block_dev_sdc.c + + + app_sdcard.c + 1 + ..\sdk\components\libraries\sdcard\app_sdcard.c + @@ -3708,6 +3723,21 @@ + FATFS + + + diskio_blkdev.c + 1 + ..\sdk\external\fatfs\port\diskio_blkdev.c + + + ff.c + 1 + ..\sdk\external\fatfs\src\ff.c + + + + ::CMSIS @@ -5363,6 +5393,11 @@ 1 ..\sdk\modules\nrfx\drivers\src\nrfx_twim.c + + nrfx_pwm.c + 1 + ..\sdk\modules\nrfx\drivers\src\nrfx_pwm.c + @@ -6768,6 +6803,16 @@ + + nrf_block_dev_sdc.c + 1 + ..\sdk\components\libraries\block_dev\sdc\nrf_block_dev_sdc.c + + + app_sdcard.c + 1 + ..\sdk\components\libraries\sdcard\app_sdcard.c + @@ -7417,6 +7462,21 @@ + FATFS + + + diskio_blkdev.c + 1 + ..\sdk\external\fatfs\port\diskio_blkdev.c + + + ff.c + 1 + ..\sdk\external\fatfs\src\ff.c + + + + ::CMSIS diff --git a/app/config/sdk_config.h b/app/config/sdk_config.h index ab5b0b8..883d8c1 100644 --- a/app/config/sdk_config.h +++ b/app/config/sdk_config.h @@ -2784,13 +2784,13 @@ // NRFX_PWM_ENABLED - nrfx_pwm - PWM peripheral driver //========================================================== #ifndef NRFX_PWM_ENABLED -#define NRFX_PWM_ENABLED 0 +#define NRFX_PWM_ENABLED 1 #endif // NRFX_PWM0_ENABLED - Enable PWM0 instance #ifndef NRFX_PWM0_ENABLED -#define NRFX_PWM0_ENABLED 0 +#define NRFX_PWM0_ENABLED 1 #endif // NRFX_PWM1_ENABLED - Enable PWM1 instance @@ -5023,7 +5023,7 @@ // PWM_ENABLED - nrf_drv_pwm - PWM peripheral driver - legacy layer //========================================================== #ifndef PWM_ENABLED -#define PWM_ENABLED 0 +#define PWM_ENABLED 1 #endif // PWM_DEFAULT_CONFIG_OUT0_PIN - Out0 pin <0-31> @@ -5123,7 +5123,7 @@ #ifndef PWM0_ENABLED -#define PWM0_ENABLED 0 +#define PWM0_ENABLED 1 #endif // PWM1_ENABLED - Enable PWM1 instance @@ -6195,7 +6195,7 @@ #ifndef APP_PWM_ENABLED -#define APP_PWM_ENABLED 0 +#define APP_PWM_ENABLED 1 #endif // APP_SCHEDULER_ENABLED - app_scheduler - Events scheduler @@ -6222,7 +6222,7 @@ // APP_SDCARD_ENABLED - app_sdcard - SD/MMC card support using SPI //========================================================== #ifndef APP_SDCARD_ENABLED -#define APP_SDCARD_ENABLED 0 +#define APP_SDCARD_ENABLED 1 #endif // APP_SDCARD_SPI_INSTANCE - SPI instance used diff --git a/app/main.c b/app/main.c index c0b11f9..f845f4a 100644 --- a/app/main.c +++ b/app/main.c @@ -7,6 +7,10 @@ #include "zble_module.h" #include "zdatachannel_service.h" +#include "ff.h" +#include "diskio_blkdev.h" +#include "nrf_block_dev_sdc.h" + #if 0 void qingfengboard_test(void) { // 测试LED @@ -85,9 +89,11 @@ static void board_init() { // adc_module_heart_elect_channel_init(NRF_SAADC_INPUT_AIN2); // board_spi_init(); - board_i2c_init(); + // board_i2c_init(); } + + int main(void) { zsys_init(); NRF_LOG_INFO("compile time :%s", __TIME__); @@ -104,8 +110,11 @@ int main(void) { NRF_SDH_BLE_OBSERVER(m_ble_observer, 3, ble_evt_handler, NULL); - ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb)); - ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL)); + // ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb)); + // ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL)); + + // fatfs_test_write(); + pwm_trigger(); zble_module_start_adv(); zsys_loop(); diff --git a/app/src/board.c b/app/src/board.c index 940461e..03f79d4 100644 --- a/app/src/board.c +++ b/app/src/board.c @@ -3,6 +3,11 @@ #include "app_timer.h" #include "nrf_gpio.h" #include "sys.h" +// +#include "diskio_blkdev.h" +#include "ff.h" +#include "nrf_block_dev_sdc.h" +#include "nrf_drv_pwm.h" static int16_t adc_channel_read_val(uint16_t channel) { nrf_saadc_value_t value; @@ -180,9 +185,41 @@ ret_code_t board_spi_transfer_test() { void screen_init() {} void screen_spi_translate_onebyte() {} + +static nrf_drv_pwm_t m_pwm0 = NRF_DRV_PWM_INSTANCE(0); +static nrf_pwm_values_individual_t m_demo1_seq_values; + +void pwm_trigger() { + nrf_drv_pwm_config_t const config0 = { + .output_pins = {11}, + .irq_priority = APP_IRQ_PRIORITY_LOWEST, + .base_clock = NRF_PWM_CLK_125kHz, + .count_mode = NRF_PWM_MODE_UP, + .top_value = 5, + .load_mode = NRF_PWM_LOAD_INDIVIDUAL, + .step_mode = NRF_PWM_STEP_AUTO, + }; + APP_ERROR_CHECK(nrf_drv_pwm_init(&m_pwm0, &config0, NULL)); + + static nrf_pwm_sequence_t const m_demo1_seq = { + .values.p_individual = &m_demo1_seq_values, + .length = NRF_PWM_VALUES_LENGTH(m_demo1_seq_values), + .repeats = 0, + .end_delay = 0, + }; + + m_demo1_seq_values.channel_0 = 2; + m_demo1_seq_values.channel_1 = 0; + m_demo1_seq_values.channel_2 = 0; + m_demo1_seq_values.channel_3 = 0; + + (void)nrf_drv_pwm_simple_playback(&m_pwm0, &m_demo1_seq, 1, NRF_DRV_PWM_FLAG_LOOP); +} + /******************************************************************************* * I2C * *******************************************************************************/ + #define TWI_SCL_M 30 // I2C SCL引脚 #define TWI_SDA_M 31 // I2C SDA引脚 static const nrf_drv_twi_t m_twi_master = NRF_DRV_TWI_INSTANCE(1); @@ -201,7 +238,96 @@ void board_i2c_init() { nrf_drv_twi_enable(&m_twi_master); } -void board_i2c_write(uint8_t addr, uint8_t* data, uint8_t len) { - nrf_drv_twi_tx(&m_twi_master, addr, data, len, false); -} +void board_i2c_write(uint8_t addr, uint8_t* data, uint8_t len) { nrf_drv_twi_tx(&m_twi_master, addr, data, len, false); } + +#define FILE_NAME "NORDIC.TXT" +#define TEST_STRING "SD card example." + +// #define SPI_MISO_PIN 31 +// #define SPI_SS_PIN 20 +// #define SPI_SCK_PIN 29 +// #define SPI_MOSI_PIN 30 + +#define SDC_SCK_PIN 29 ///< SDC serial clock (SCK) pin. +#define SDC_MOSI_PIN 30 ///< SDC serial data in (DI) pin. +#define SDC_MISO_PIN 31 ///< SDC serial data out (DO) pin. +#define SDC_CS_PIN 28 ///< SDC chip select (CS) pin. + +NRF_BLOCK_DEV_SDC_DEFINE(m_block_dev_sdc, NRF_BLOCK_DEV_SDC_CONFIG(SDC_SECTOR_SIZE, APP_SDCARD_CONFIG(SDC_MOSI_PIN, SDC_MISO_PIN, SDC_SCK_PIN, SDC_CS_PIN)), NFR_BLOCK_DEV_INFO_CONFIG("Nordic", "SDC", "1.00")); +void fatfs_init() {} +void fatfs_test_write() { + static FATFS fs; + static DIR dir; + static FILINFO fno; + static FIL file; + + uint32_t bytes_written; + FRESULT ff_result; + DSTATUS disk_state = STA_NOINIT; + + // Initialize FATFS disk I/O interface by providing the block device. + static diskio_blkdev_t drives[] = {DISKIO_BLOCKDEV_CONFIG(NRF_BLOCKDEV_BASE_ADDR(m_block_dev_sdc, block_dev), NULL)}; + + diskio_blockdev_register(drives, ARRAY_SIZE(drives)); + + NRF_LOG_INFO("Initializing disk 0 (SDC)..."); + for (uint32_t retries = 3; retries && disk_state; --retries) { + disk_state = disk_initialize(0); + } + if (disk_state) { + NRF_LOG_INFO("Disk initialization failed."); + return; + } + + uint32_t blocks_per_mb = (1024uL * 1024uL) / m_block_dev_sdc.block_dev.p_ops->geometry(&m_block_dev_sdc.block_dev)->blk_size; + uint32_t capacity = m_block_dev_sdc.block_dev.p_ops->geometry(&m_block_dev_sdc.block_dev)->blk_count / blocks_per_mb; + NRF_LOG_INFO("Capacity: %d MB", capacity); + + NRF_LOG_INFO("Mounting volume..."); + ff_result = f_mount(&fs, "", 1); + if (ff_result) { + NRF_LOG_INFO("Mount failed."); + return; + } + + NRF_LOG_INFO("\r\n Listing directory: /"); + ff_result = f_opendir(&dir, "/"); + if (ff_result) { + NRF_LOG_INFO("Directory listing failed!"); + return; + } + + do { + ff_result = f_readdir(&dir, &fno); + if (ff_result != FR_OK) { + NRF_LOG_INFO("Directory read failed."); + return; + } + + if (fno.fname[0]) { + if (fno.fattrib & AM_DIR) { + NRF_LOG_RAW_INFO(" %s", (uint32_t)fno.fname); + } else { + NRF_LOG_RAW_INFO("%9lu %s", fno.fsize, (uint32_t)fno.fname); + } + } + } while (fno.fname[0]); + NRF_LOG_RAW_INFO(""); + + NRF_LOG_INFO("Writing to file " FILE_NAME "..."); + ff_result = f_open(&file, FILE_NAME, FA_READ | FA_WRITE | FA_OPEN_APPEND); + if (ff_result != FR_OK) { + NRF_LOG_INFO("Unable to open or create file: " FILE_NAME "."); + return; + } + + ff_result = f_write(&file, TEST_STRING, sizeof(TEST_STRING) - 1, (UINT*)&bytes_written); + if (ff_result != FR_OK) { + NRF_LOG_INFO("Write failed\r\n."); + } else { + NRF_LOG_INFO("%d bytes written.", bytes_written); + } + (void)f_close(&file); + return; +} \ No newline at end of file diff --git a/app/src/board.h b/app/src/board.h index 47a7fce..331f855 100644 --- a/app/src/board.h +++ b/app/src/board.h @@ -54,4 +54,11 @@ void board_i2c_init(); void board_i2c_write(uint8_t addr, uint8_t* data, uint8_t len); void screen_init(); -void screen_spi_translate_onebyte(); \ No newline at end of file +void screen_spi_translate_onebyte(); + +/******************************************************************************* + * FATFS * + *******************************************************************************/ +void fatfs_init(); +void fatfs_test_write(); +void pwm_trigger(); \ No newline at end of file diff --git a/sdk b/sdk index 4583631..9ff458f 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 458363107275ea8f80171b824a634780a1d84eb3 +Subproject commit 9ff458fcdef52d2ff06829ec783406af521844da