From b5000adf0e4326d155d171cb78607d1ac095c250 Mon Sep 17 00:00:00 2001 From: StefansE Date: Sun, 29 Mar 2026 13:03:24 +0200 Subject: [PATCH 1/4] Wrong display --- Core/Inc/ComsRead.h | 17 ++++++++ Core/Inc/ds1307.h | 3 ++ Core/Inc/myComms.h | 2 + Core/Inc/ws2812_effect.h | 1 + Core/Src/ds1307.c | 48 +++++++++++++++++++++++ Core/Src/main.c | 8 ++-- Core/Src/myComms.c | 83 ++++++++++++++++++++++++++++++++++++++++ Core/Src/ws2812_effect.c | 33 ++++++++++++++++ 8 files changed, 192 insertions(+), 3 deletions(-) create mode 100644 Core/Inc/ComsRead.h diff --git a/Core/Inc/ComsRead.h b/Core/Inc/ComsRead.h new file mode 100644 index 0000000..e41781b --- /dev/null +++ b/Core/Inc/ComsRead.h @@ -0,0 +1,17 @@ +/* + * ComsRead.h + * + * Created on: Mar 29, 2026 + * Author: ewars + */ + +#ifndef INC_COMSREAD_H_ +#define INC_COMSREAD_H_ + +void readColour_Hours(uint8_t * data); +void readColour_Minutes(uint8_t * data); +void readColour_Seconds(uint8_t * data); +void readColour_Background(uint8_t * data); + + +#endif /* INC_COMSREAD_H_ */ diff --git a/Core/Inc/ds1307.h b/Core/Inc/ds1307.h index 6bbabfa..75e70bd 100644 --- a/Core/Inc/ds1307.h +++ b/Core/Inc/ds1307.h @@ -96,5 +96,8 @@ void ds1307_config(uint8_t seconds, uint8_t minutes, uint8_t hours,ds1307_days_t void ds1307_log_uart(ds1307_dev_t *ds1307_dev); +uint8_t ds1307_read_user_RAM(uint8_t addr, uint8_t * data, uint8_t len); +uint8_t ds1307_write_user_RAM(uint8_t addr, uint8_t * data, uint8_t len); + #endif /* DS1307_H_ */ diff --git a/Core/Inc/myComms.h b/Core/Inc/myComms.h index 9ad3c43..b4e85a9 100644 --- a/Core/Inc/myComms.h +++ b/Core/Inc/myComms.h @@ -18,6 +18,8 @@ typedef enum { com_setColour_minute, com_setColour_second, com_setColour_background, + com_readNV, + com_writeNV, com_MAX_command } commands_e; diff --git a/Core/Inc/ws2812_effect.h b/Core/Inc/ws2812_effect.h index 7825208..34c5724 100644 --- a/Core/Inc/ws2812_effect.h +++ b/Core/Inc/ws2812_effect.h @@ -15,6 +15,7 @@ void ws_Effect_RoudTheClock(void); void ws_Effect_RandRound(void); void ws_Effect_RandRand(void); +void ws_effect_setDisplayColoursNV(void); void ws_effect_display_time(uint8_t hour, uint8_t minute, uint8_t second); void ws_effect_display_hour(uint8_t hour); diff --git a/Core/Src/ds1307.c b/Core/Src/ds1307.c index b5232c6..2bc472e 100644 --- a/Core/Src/ds1307.c +++ b/Core/Src/ds1307.c @@ -42,6 +42,54 @@ static uint8_t ds1307_read_byte(uint8_t ds1307_reg_addres); static uint8_t ds1307_bcd_decode(uint8_t data); static uint8_t ds1307_bcd_encode(uint8_t data); +/* + * + Function designed to read embedded RAM data. + Address range 0x08 to 0x3F + 56 bytes of data + + addr: address of data to read 0x08 to 0x3F + data: pointer to data + len: number of bytes of data to read + + */ + +uint8_t ds1307_read_user_RAM(uint8_t addr, uint8_t * data, uint8_t len){ + + HAL_StatusTypeDef status = HAL_OK; + + for(uint8_t i = 0; i < len; i++){ + uint8_t resp = ds1307_read_byte(addr + i); + *(data + i) = resp; + } + + return status; +} + +/* + * + Function designed to write embedded RAM data. + Address range 0x08 to 0x3F + 56 bytes of data + + addr: address of data to read 0x08 to 0x3F + data: pointer to data + len: number of bytes of data to read + + */ + +uint8_t ds1307_write_user_RAM(uint8_t addr, uint8_t * data, uint8_t len){ + HAL_StatusTypeDef status = HAL_OK; + + for(uint8_t i = 0; i < len; i++){ + + ds1307_write_byte(addr + i, *(data + i)); + + } + + return status; +} + /** * @brief Write byte data from an specific address ds1307 RTC * diff --git a/Core/Src/main.c b/Core/Src/main.c index f97f14a..4025563 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -124,11 +124,8 @@ int main(void) MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start(&htim2); - ws2812_Init(); - uint32_t mytimer = 0; // RTC config @@ -136,6 +133,11 @@ int main(void) // ds1307_config(0, 10, 19, THURSDAY, 26, MARCH, 2026, +1, 33); + HAL_TIM_Base_Start(&htim2); + ws2812_Init(); + //ws_effect_setDisplayColoursNV(); + + /* USER CODE END 2 */ /* Infinite loop */ diff --git a/Core/Src/myComms.c b/Core/Src/myComms.c index fbdecb8..cb3130a 100644 --- a/Core/Src/myComms.c +++ b/Core/Src/myComms.c @@ -15,6 +15,12 @@ #include "ds1307.h" + +#define NV_COLOUR_HOURS_ADDR 0x08 +#define NV_COLOUR_MINUTES_ADDR 0x09 +#define NV_COLOUR_SECONDS_ADDR 0x0A +#define NV_COLOUR_BACKGND_ADDR 0x0B + typedef struct { uint8_t cmdId; @@ -28,7 +34,10 @@ typedef struct { uint8_t crc; } uartMessage_s; +static void cmd_readNV(uint32_t data); +static void cmd_writeNV(uint8_t * data); +static uint8_t nok[] = "NOK\n"; static uint8_t ok[] = "OK\n"; uint8_t myId[] = "Clock\n"; @@ -41,9 +50,44 @@ void (*commands[])(uint32_t) = { cmd_GetTime, cmd_setColour_hour, cmd_setColour_minute, + cmd_setColour_second, + cmd_setColour_background, + cmd_readNV, + cmd_writeNV, cmd_setColour_second }; +static void cmd_readNV(uint32_t data){ + HAL_StatusTypeDef status = HAL_ERROR; + + uint8_t addr = (uint8_t) data; + uint8_t respBuf[3] = {0}; + + status = ds1307_read_user_RAM(addr, respBuf, sizeof(respBuf)); + + if(HAL_OK == status){ + CDC_Transmit_FS(respBuf, sizeof(respBuf)); + } + else{ + CDC_Transmit_FS(nok, sizeof(nok)); + } +} + +static void cmd_writeNV(uint8_t * data){ + HAL_StatusTypeDef status = HAL_ERROR; + + + status = ds1307_write_user_RAM(data[0], &data[1], 3); + + if(HAL_OK == status){ + CDC_Transmit_FS(ok, sizeof(ok)); + } + else{ + CDC_Transmit_FS(nok, sizeof(nok)); + } + +} + void setRxFlag(void){ RxComplete_fl = 1; @@ -131,6 +175,15 @@ void cmd_setColour_hour(uint32_t colour){ clock_setColourHours(r, g, b); + uint8_t nv[] = { + NV_COLOUR_HOURS_ADDR, + r, + g, + b + }; + + cmd_writeNV(nv); + CDC_Transmit_FS(ok, sizeof(ok)); } @@ -144,6 +197,16 @@ void cmd_setColour_minute(uint32_t colour){ clock_setColourMinutes(r, g, b); + + uint8_t nv[] = { + NV_COLOUR_MINUTES_ADDR, + r, + g, + b + }; + + cmd_writeNV(nv); + CDC_Transmit_FS(ok, sizeof(ok)); } @@ -157,6 +220,16 @@ void cmd_setColour_second(uint32_t colour){ clock_setColourSeconds(r, g, b); + + uint8_t nv[] = { + NV_COLOUR_SECONDS_ADDR, + r, + g, + b + }; + + cmd_writeNV(nv); + CDC_Transmit_FS(ok, sizeof(ok)); } @@ -170,5 +243,15 @@ void cmd_setColour_background(uint32_t colour){ clock_setColourBackground(r, g, b); + + uint8_t nv[] = { + NV_COLOUR_BACKGND_ADDR, + r, + g, + b + }; + + cmd_writeNV(nv); + CDC_Transmit_FS(ok, sizeof(ok)); } diff --git a/Core/Src/ws2812_effect.c b/Core/Src/ws2812_effect.c index a092e42..2ccce23 100644 --- a/Core/Src/ws2812_effect.c +++ b/Core/Src/ws2812_effect.c @@ -9,6 +9,13 @@ #include "ws2812_effect.h" #include "clock.h" #include +#include "ds1307.h" + +#define NV_COLOUR_HOURS_ADDR 0x08 +#define NV_COLOUR_MINUTES_ADDR 0x09 +#define NV_COLOUR_SECONDS_ADDR 0x0A +#define NV_COLOUR_BACKGND_ADDR 0x0B + typedef struct { uint8_t r; @@ -21,6 +28,32 @@ static colour_s colour_minutes = {0, 250, 0}; static colour_s colour_seconds = {0, 0, 250}; static colour_s colour_background = {0, 0, 0}; +void ws_effect_setDisplayColoursNV(void){ + + uint8_t rxBuf[3] = {0}; + + ds1307_read_user_RAM(NV_COLOUR_HOURS_ADDR, rxBuf, sizeof(rxBuf)); + colour_hours.r = rxBuf[0]; + colour_hours.g = rxBuf[1]; + colour_hours.b = rxBuf[2]; + + ds1307_read_user_RAM(NV_COLOUR_MINUTES_ADDR, rxBuf, sizeof(rxBuf)); + colour_minutes.r = rxBuf[0]; + colour_minutes.g = rxBuf[1]; + colour_minutes.b = rxBuf[2]; + + ds1307_read_user_RAM(NV_COLOUR_SECONDS_ADDR, rxBuf, sizeof(rxBuf)); + colour_seconds.r = rxBuf[0]; + colour_seconds.g = rxBuf[1]; + colour_seconds.b = rxBuf[2]; + + ds1307_read_user_RAM(NV_COLOUR_BACKGND_ADDR, rxBuf, sizeof(rxBuf)); + colour_background.r = rxBuf[0]; + colour_background.g = rxBuf[1]; + colour_background.b = rxBuf[2]; + +} + void clock_setColourHours(uint8_t r, uint8_t g, uint8_t b){ colour_hours.r = r; colour_hours.g = g; From cd2662eceb0205f85947631c940419d83b7f7b0b Mon Sep 17 00:00:00 2001 From: StefansE Date: Sun, 29 Mar 2026 13:39:14 +0200 Subject: [PATCH 2/4] DMA NVIC priority increase. --- .settings/stm32cubeide.project.prefs | 2 +- Core/Src/dma.c | 2 +- Core/Src/main.c | 17 ++++++----------- Core/Src/tim.c | 2 +- Core/Src/ws2812_effect.c | 8 ++++---- LedRing.ioc | 11 ++++++----- USB_DEVICE/App/usbd_cdc_if.c | 1 - 7 files changed, 19 insertions(+), 24 deletions(-) diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs index c11a0a3..7f626b4 100644 --- a/.settings/stm32cubeide.project.prefs +++ b/.settings/stm32cubeide.project.prefs @@ -1,3 +1,3 @@ 8DF89ED150041C4CBC7CB9A9CAA90856=3B9AC612F80B3672D4AEDF95B2FAE837 -DC22A860405A8BF2F2C095E5B6529F12=B906B5FA0271D057D2544B3C1B4A8DE5 +DC22A860405A8BF2F2C095E5B6529F12=3B9AC612F80B3672D4AEDF95B2FAE837 eclipse.preferences.version=1 diff --git a/Core/Src/dma.c b/Core/Src/dma.c index 1d6068c..a77679f 100644 --- a/Core/Src/dma.c +++ b/Core/Src/dma.c @@ -44,7 +44,7 @@ void MX_DMA_Init(void) /* DMA interrupt init */ /* DMA1_Channel5_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0); + HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 6, 0); HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); } diff --git a/Core/Src/main.c b/Core/Src/main.c index 4025563..93257c4 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -30,6 +30,7 @@ #include "ws2812_effect.h" #include "ds1307.h" #include "clock.h" +#include "myComms.h" #include "usbd_cdc_if.h" @@ -95,7 +96,8 @@ int main(void) { /* USER CODE BEGIN 1 */ - + // uint8_t UART_Buff[] = "Hello World\n"; + // #define EFFECT_TIME 1000 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ @@ -124,18 +126,13 @@ int main(void) MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ - - - uint32_t mytimer = 0; - // RTC config ds1307_init(); // ds1307_config(0, 10, 19, THURSDAY, 26, MARCH, 2026, +1, 33); - HAL_TIM_Base_Start(&htim2); ws2812_Init(); - //ws_effect_setDisplayColoursNV(); + /* USER CODE END 2 */ @@ -148,13 +145,11 @@ int main(void) /* USER CODE BEGIN 3 */ -uint8_t UART_Buff[] = "Hello World\n"; -#define EFFECT_TIME 10000 + //ws_effect_setDisplayColoursNV(); - - ds1307_update(&my_rtc); + ds1307_update(&my_rtc); uint8_t hour = my_rtc.hours; uint8_t minutes = my_rtc.minutes; diff --git a/Core/Src/tim.c b/Core/Src/tim.c index 4371bb4..decee41 100644 --- a/Core/Src/tim.c +++ b/Core/Src/tim.c @@ -111,7 +111,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) __HAL_LINKDMA(tim_baseHandle,hdma[TIM_DMA_ID_CC1],hdma_tim2_ch1); /* TIM2 interrupt Init */ - HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); + HAL_NVIC_SetPriority(TIM2_IRQn, 6, 0); HAL_NVIC_EnableIRQ(TIM2_IRQn); /* USER CODE BEGIN TIM2_MspInit 1 */ diff --git a/Core/Src/ws2812_effect.c b/Core/Src/ws2812_effect.c index 2ccce23..982a73f 100644 --- a/Core/Src/ws2812_effect.c +++ b/Core/Src/ws2812_effect.c @@ -32,22 +32,22 @@ void ws_effect_setDisplayColoursNV(void){ uint8_t rxBuf[3] = {0}; - ds1307_read_user_RAM(NV_COLOUR_HOURS_ADDR, rxBuf, sizeof(rxBuf)); + ds1307_read_user_RAM(NV_COLOUR_HOURS_ADDR, rxBuf, 3); colour_hours.r = rxBuf[0]; colour_hours.g = rxBuf[1]; colour_hours.b = rxBuf[2]; - ds1307_read_user_RAM(NV_COLOUR_MINUTES_ADDR, rxBuf, sizeof(rxBuf)); + ds1307_read_user_RAM(NV_COLOUR_MINUTES_ADDR, rxBuf, 3); colour_minutes.r = rxBuf[0]; colour_minutes.g = rxBuf[1]; colour_minutes.b = rxBuf[2]; - ds1307_read_user_RAM(NV_COLOUR_SECONDS_ADDR, rxBuf, sizeof(rxBuf)); + ds1307_read_user_RAM(NV_COLOUR_SECONDS_ADDR, rxBuf, 3); colour_seconds.r = rxBuf[0]; colour_seconds.g = rxBuf[1]; colour_seconds.b = rxBuf[2]; - ds1307_read_user_RAM(NV_COLOUR_BACKGND_ADDR, rxBuf, sizeof(rxBuf)); + ds1307_read_user_RAM(NV_COLOUR_BACKGND_ADDR, rxBuf, 3); colour_background.r = rxBuf[0]; colour_background.g = rxBuf[1]; colour_background.b = rxBuf[2]; diff --git a/LedRing.ioc b/LedRing.ioc index 05f2ff8..3374ea7 100644 --- a/LedRing.ioc +++ b/LedRing.ioc @@ -46,10 +46,10 @@ Mcu.PinsNb=13 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C6Tx -MxCube.Version=6.14.0 -MxDb.Version=DB.6.0.140 +MxCube.Version=6.14.1 +MxDb.Version=DB.6.0.141 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.DMA1_Channel5_IRQn=true\:6\:0\:true\:false\:true\:false\:true\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.ForceEnableDMAVector=true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false @@ -59,7 +59,7 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false -NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.TIM2_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true NVIC.USB_LP_CAN1_RX0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false PA0-WKUP.Signal=S_TIM2_CH1_ETR @@ -115,7 +115,7 @@ ProjectManager.ToolChainLocation= ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptBeforePath= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false RCC.ADCFreqValue=36000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -158,3 +158,4 @@ VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS board=custom +isbadioc=false diff --git a/USB_DEVICE/App/usbd_cdc_if.c b/USB_DEVICE/App/usbd_cdc_if.c index 5315c89..78e77e9 100644 --- a/USB_DEVICE/App/usbd_cdc_if.c +++ b/USB_DEVICE/App/usbd_cdc_if.c @@ -256,7 +256,6 @@ static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) * @param Len: Number of data received (in bytes) * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL */ - static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ From 1aef3ea2abe7cb35f6322f3ba11b7526540d0ed8 Mon Sep 17 00:00:00 2001 From: StefansE Date: Fri, 3 Apr 2026 15:27:34 +0200 Subject: [PATCH 3/4] Writing NVM not working --- Core/Src/clock.c | 2 +- Core/Src/ds1307.c | 7 ++++++- Core/Src/myComms.c | 6 +++--- Core/Src/ws2812_effect.c | 6 +++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Core/Src/clock.c b/Core/Src/clock.c index b4d96d4..664f136 100644 --- a/Core/Src/clock.c +++ b/Core/Src/clock.c @@ -10,7 +10,7 @@ // define LED marking 12:00 or 00:00 -#define LED_OFFSET 11 +#define LED_OFFSET 12 diff --git a/Core/Src/ds1307.c b/Core/Src/ds1307.c index 2bc472e..3dd6f98 100644 --- a/Core/Src/ds1307.c +++ b/Core/Src/ds1307.c @@ -80,13 +80,18 @@ uint8_t ds1307_read_user_RAM(uint8_t addr, uint8_t * data, uint8_t len){ uint8_t ds1307_write_user_RAM(uint8_t addr, uint8_t * data, uint8_t len){ HAL_StatusTypeDef status = HAL_OK; + uint8_t buff[4] = {0}; + buff[0] = addr; for(uint8_t i = 0; i < len; i++){ - ds1307_write_byte(addr + i, *(data + i)); + buff[1+i] = *(data+i); } + // ds1307_write_byte(addr + i, *(data + i)); + HAL_I2C_Master_Transmit(&DS1307_HANDLER, DS1307_ADDRES << 1, buff, len + 1, DS1307_TIMEOUT); + return status; } diff --git a/Core/Src/myComms.c b/Core/Src/myComms.c index cb3130a..e89a257 100644 --- a/Core/Src/myComms.c +++ b/Core/Src/myComms.c @@ -17,9 +17,9 @@ #define NV_COLOUR_HOURS_ADDR 0x08 -#define NV_COLOUR_MINUTES_ADDR 0x09 -#define NV_COLOUR_SECONDS_ADDR 0x0A -#define NV_COLOUR_BACKGND_ADDR 0x0B +#define NV_COLOUR_MINUTES_ADDR 0x0B +#define NV_COLOUR_SECONDS_ADDR 0x0E +#define NV_COLOUR_BACKGND_ADDR 0x11 typedef struct { uint8_t cmdId; diff --git a/Core/Src/ws2812_effect.c b/Core/Src/ws2812_effect.c index 982a73f..64939f8 100644 --- a/Core/Src/ws2812_effect.c +++ b/Core/Src/ws2812_effect.c @@ -12,9 +12,9 @@ #include "ds1307.h" #define NV_COLOUR_HOURS_ADDR 0x08 -#define NV_COLOUR_MINUTES_ADDR 0x09 -#define NV_COLOUR_SECONDS_ADDR 0x0A -#define NV_COLOUR_BACKGND_ADDR 0x0B +#define NV_COLOUR_MINUTES_ADDR 0x0B +#define NV_COLOUR_SECONDS_ADDR 0x0E +#define NV_COLOUR_BACKGND_ADDR 0x11 typedef struct { From 48e899af5b40fa77745e0cee8493fff6cd69e85a Mon Sep 17 00:00:00 2001 From: StefansE Date: Fri, 3 Apr 2026 15:51:14 +0200 Subject: [PATCH 4/4] NV-RAM works again --- Core/Src/ds1307.c | 5 ++--- Core/Src/myComms.c | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Core/Src/ds1307.c b/Core/Src/ds1307.c index 3dd6f98..fa84b81 100644 --- a/Core/Src/ds1307.c +++ b/Core/Src/ds1307.c @@ -85,12 +85,11 @@ uint8_t ds1307_write_user_RAM(uint8_t addr, uint8_t * data, uint8_t len){ for(uint8_t i = 0; i < len; i++){ - buff[1+i] = *(data+i); + ds1307_write_byte(addr + i, *(data + i)); + HAL_Delay(5); } - // ds1307_write_byte(addr + i, *(data + i)); - HAL_I2C_Master_Transmit(&DS1307_HANDLER, DS1307_ADDRES << 1, buff, len + 1, DS1307_TIMEOUT); return status; } diff --git a/Core/Src/myComms.c b/Core/Src/myComms.c index e89a257..60acb7d 100644 --- a/Core/Src/myComms.c +++ b/Core/Src/myComms.c @@ -35,7 +35,7 @@ typedef struct { } uartMessage_s; static void cmd_readNV(uint32_t data); -static void cmd_writeNV(uint8_t * data); +static void cmd_writeNV(uint8_t data); static uint8_t nok[] = "NOK\n"; static uint8_t ok[] = "OK\n"; @@ -73,11 +73,11 @@ static void cmd_readNV(uint32_t data){ } } -static void cmd_writeNV(uint8_t * data){ +static void cmd_writeNV(uint8_t data){ HAL_StatusTypeDef status = HAL_ERROR; - status = ds1307_write_user_RAM(data[0], &data[1], 3); + status = ds1307_write_user_RAM(UART_RxBuf[1], &UART_RxBuf[2], 3); if(HAL_OK == status){ CDC_Transmit_FS(ok, sizeof(ok));