diff --git a/Libraries/SoftI2C_HAL_Lib b/Libraries/SoftI2C_HAL_Lib index 0a6b8ee..3f66272 160000 --- a/Libraries/SoftI2C_HAL_Lib +++ b/Libraries/SoftI2C_HAL_Lib @@ -1 +1 @@ -Subproject commit 0a6b8ee6aa4d3b5c4952458c3c7cc905acbf5f64 +Subproject commit 3f6627255410641aa26a077891e2e87c20cbde37 diff --git a/Project/SlaveNode.uvprojx b/Project/SlaveNode.uvprojx index 2acea46..74d0666 100644 --- a/Project/SlaveNode.uvprojx +++ b/Project/SlaveNode.uvprojx @@ -339,7 +339,7 @@ USE_HAL_DRIVER, STM32F103x6 - ..\Core;..\Libraries\HAL_Lib\Inc;..\Libraries\SoftSPI_HAL_Lib;..\User\Main;..\System\sys;..\System\systick;..\System\uart;..\Hardware\led + ..\Core;..\Libraries\HAL_Lib\Inc;..\Libraries\SoftSPI_HAL_Lib;..\Libraries\SoftI2C_HAL_Lib;..\User\Main;..\System\sys;..\System\systick;..\System\uart;..\Hardware\led @@ -650,6 +650,21 @@ + + SoftI2C_HAL_Lib + + + softi2c_conf.h + 5 + ..\Libraries\SoftI2C_HAL_Lib\softi2c_conf.h + + + softi2c.c + 1 + ..\Libraries\SoftI2C_HAL_Lib\softi2c.c + + + System diff --git a/User/Main/main.c b/User/Main/main.c index 0de1ef1..92adde0 100644 --- a/User/Main/main.c +++ b/User/Main/main.c @@ -1,20 +1,21 @@ /** * @file main.c * @author Myth - * @version 0.2 + * @version 0.3 * @date 2021.10.12 * @brief 工程主函数文件 * @details 初始化及主循环 * @note 此版本实现功能: * 串口回显,回显时 PC13 上的 LED 闪烁 - * 软件 SPI + * 软件 I2C + * JTAG 已禁用,请使用 SWD 调试 */ #include "sys.h" #include "systick.h" #include "uart.h" -#include "softspi.h" +#include "softi2c.h" #include "led.h" @@ -27,6 +28,7 @@ int main(void) Error_Handler(__FILE__, __LINE__); //错误处理 } SystemClock_Config(); //初始化系统时钟为 72MHz + DisableJTAG(); //禁用 JTAG SysTick_Init(); //初始化 SysTick 和软件定时器 UART_Init(); //初始化串口 @@ -34,30 +36,39 @@ int main(void) UART_BindReceiveHandle(COM1, Echo); //绑定 COM1 串口接收中断至 Echo 函数 - SoftSPI_TypeDef SoftSPI; + SoftI2C_TypeDef SoftI2C; - SoftSPI.SCLK_GPIO = GPIOB; - SoftSPI.SCLK_Pin = GPIO_PIN_10; - SoftSPI.MOSI_GPIO = GPIOA; - SoftSPI.MOSI_Pin = GPIO_PIN_5; - SoftSPI.MISO_GPIO = GPIOA; - SoftSPI.MISO_Pin = GPIO_PIN_4; - SoftSPI.SS_GPIO = GPIOA; - SoftSPI.SS_Pin = GPIO_PIN_6; - SoftSPI.Delay_Time = 10; + SoftI2C.SDA_GPIO = GPIOB; + SoftI2C.SDA_Pin = GPIO_PIN_3; + SoftI2C.SCL_GPIO = GPIOB; + SoftI2C.SCL_Pin = GPIO_PIN_4; + SoftI2C.Delay_Time = 10; - if (SoftSPI_Init(&SoftSPI) != HAL_OK) //初始化软件 SPI + if (SoftI2C_Init(&SoftI2C) != HAL_OK) //初始化软件 I2C { Error_Handler(__FILE__, __LINE__); //错误处理 } - uint8_t write[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - uint8_t read[10]; while (1) { //程序主循环 - SoftSPI_WriteReadBuff(&SoftSPI, write, read, 10); - Delay_us(100); + SoftI2C_Start(&SoftI2C); + + SoftI2C_WriteByte(&SoftI2C, 0x10); + SoftI2C_WaitAck(&SoftI2C); + + SoftI2C_WriteByte(&SoftI2C, 0x22); + SoftI2C_WaitAck(&SoftI2C); + + SoftI2C_WriteByte(&SoftI2C, 0x33); + SoftI2C_WaitAck(&SoftI2C); + + SoftI2C_WriteByte(&SoftI2C, 0x44); + SoftI2C_WaitAck(&SoftI2C); + + SoftI2C_Stop(&SoftI2C); + + Delay_us(1000); } return 1;