diff --git a/Core/Src/Components/Start.cpp b/Core/Src/Components/Start.cpp index 6d90752..d598fc3 100644 --- a/Core/Src/Components/Start.cpp +++ b/Core/Src/Components/Start.cpp @@ -43,9 +43,11 @@ void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t transferDirection, ui HAL_I2C_Slave_Seq_Receive_DMA(hi2c, receivingBuffer + receivingBufferDataSize, 1, I2C_NEXT_FRAME); }else{ slaveMode = Transmitting; - transmittingBuffer[0] = 0x55; - transmittingBufferDataSize = 1; - HAL_I2C_Slave_Seq_Transmit_DMA(hi2c, transmittingBuffer, transmittingBufferDataSize, I2C_LAST_FRAME); + if(transmittingBufferDataSize){ + HAL_I2C_Slave_Seq_Transmit_DMA(hi2c, transmittingBuffer, transmittingBufferDataSize, I2C_LAST_FRAME); + }else{ + + } } } @@ -68,7 +70,7 @@ void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) { } void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) { - transmittingBufferDataSize = 0; + //transmittingBufferDataSize = 0; } void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { @@ -76,9 +78,15 @@ void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { } void Start(){ + uint8_t byte[4] = {33, 34, 35, 36}; HAL_I2C_EnableListen_IT(&hi2c3); while(1){ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin); - HAL_Delay(10000); + transmit(byte, 3); + byte[0]++; + byte[1]++; + byte[2]++; + byte[3]++; + HAL_Delay(500); } } diff --git a/Core/Src/main.c b/Core/Src/main.c index ad5a440..4e0aac0 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -246,7 +246,7 @@ static void MX_I2C3_Init(void) hi2c3.Instance = I2C3; hi2c3.Init.ClockSpeed = 100000; hi2c3.Init.DutyCycle = I2C_DUTYCYCLE_2; - hi2c3.Init.OwnAddress1 = 126; + hi2c3.Init.OwnAddress1 = 32; hi2c3.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c3.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c3.Init.OwnAddress2 = 0; diff --git a/Core/Src/syscalls.c b/Core/Src/syscalls.c index fadb992..03ee68d 100644 --- a/Core/Src/syscalls.c +++ b/Core/Src/syscalls.c @@ -29,7 +29,7 @@ #include #include #include - +#include "main.h" /* Variables */ extern int __io_putchar(int ch) __attribute__((weak)); @@ -80,7 +80,7 @@ __attribute__((weak)) int _write(int file, char *ptr, int len) for (DataIdx = 0; DataIdx < len; DataIdx++) { - __io_putchar(*ptr++); + ITM_SendChar(*ptr++); } return len; } diff --git a/F411-i2c-peripheral.ioc b/F411-i2c-peripheral.ioc index 65ff7c5..c84799e 100644 --- a/F411-i2c-peripheral.ioc +++ b/F411-i2c-peripheral.ioc @@ -1,4 +1,7 @@ #MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= Dma.I2C3_RX.0.Direction=DMA_PERIPH_TO_MEMORY Dma.I2C3_RX.0.FIFOMode=DMA_FIFOMODE_DISABLE Dma.I2C3_RX.0.Instance=DMA1_Stream1 @@ -24,7 +27,7 @@ Dma.Request1=I2C3_TX Dma.RequestsNb=2 File.Version=6 I2C3.IPParameters=OwnAddress -I2C3.OwnAddress=0x3F +I2C3.OwnAddress=0x10 I2S2.AudioFreq=I2S_AUDIOFREQ_96K I2S2.ErrorAudioFreq=0.15 % I2S2.FullDuplexMode=I2S_FULLDUPLEXMODE_ENABLE @@ -347,10 +350,13 @@ ProjectManager.PreviousToolchain= ProjectManager.ProjectBuild=false ProjectManager.ProjectFileName=F411-i2c-peripheral.ioc ProjectManager.ProjectName=F411-i2c-peripheral +ProjectManager.ProjectStructure= ProjectManager.RegisterCallBack= ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE 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_I2C1_Init-I2C1-false-HAL-true,5-MX_I2S2_Init-I2S2-false-HAL-true,6-MX_I2S3_Init-I2S3-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_USB_HOST_Init-USB_HOST-false-HAL-false,9-MX_I2C3_Init-I2C3-false-HAL-true RCC.48MHZClocksFreq_Value=48000000 diff --git a/STM32F411VETX_FLASH.ld b/STM32F411VETX_FLASH.ld index 919c450..c991fb8 100644 --- a/STM32F411VETX_FLASH.ld +++ b/STM32F411VETX_FLASH.ld @@ -38,8 +38,8 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ -_Min_Heap_Size = 0x200 ; /* required amount of heap */ -_Min_Stack_Size = 0x400 ; /* required amount of stack */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ /* Memories definition */ MEMORY