diff --git a/app/MDK-ARM/app.uvguix.29643 b/app/MDK-ARM/app.uvguix.29643 index 4d827ba..7ab42d8 100644 --- a/app/MDK-ARM/app.uvguix.29643 +++ b/app/MDK-ARM/app.uvguix.29643 @@ -1883,9 +1883,9 @@ ..\..\usersrc\usermain.c - 20 - 72 - 88 + 19 + 1 + 1 1 0 diff --git a/usersrc/usermain.c b/usersrc/usermain.c index c34bb99..c10c2e8 100644 --- a/usersrc/usermain.c +++ b/usersrc/usermain.c @@ -18,21 +18,24 @@ #define Dummy_Byte 0xFF // 读取时MISO发送的数据,可以为任意数据 -#define delay_us 5 +#define spi_delay_us 5 +#define spi_table_type_size 50 -// 50us -// -// CS 11000 -// SCK -// MOSI -// -// - -// uint8_t table[3][52] = { -// {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, -// {1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, -// {1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, -// }; +typedef enum +{ + SPI_SEL_TYPE = 0, + SPI_SCK_TYPE, + SPI_MOSI_TYPE, + SPI_MISO_TYPE, + SPI_TYPE_NUMBER, +} SPI_TYPE; + +uint8_t table[SPI_TYPE_NUMBER][spi_table_type_size] = { + {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, // sel + {1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // sck + {1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, // mosi + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // miso +}; void sys_delay_us(uint32_t us) { @@ -45,83 +48,17 @@ void sys_delay_us(uint32_t us) } HAL_TIM_Base_Stop(&htim7); } -// void dotable() -// { -// for (size_t i = 0; i < 52; i++) -// { -// table[0][i] ? SPI_CS_1() : SPI_CS_0(); -// table[1][i] ? SPI_SCK_1() : SPI_SCK_0(); -// table[2][i] ? SPI_MOSI_1() : SPI_MOSI_0(); -// sys_delay_us(5); -// } -// } - -// SPI可以同时读取和写入数据,因此一个函数即可满足要求 -uint8_t SPI_ReadWriteByte(uint8_t txData) +void dotable() { - uint8_t i; - uint8_t rxData = 0; - - SPI_CS_0(); - sys_delay_us(delay_us); // symbol tsw - SPI_SCK_0(); - sys_delay_us(delay_us + 3); - - for (i = 0; i < 8; i++) + for (size_t i = 0; i < spi_table_type_size; i++) { - SPI_SCK_1(); - sys_delay_us(1); - // 数据发送 - if (txData & 0x80) - { - SPI_MOSI_1(); - } - else - { - SPI_MOSI_0(); - } - txData <<= 1; - sys_delay_us(delay_us); - - SPI_SCK_0(); - sys_delay_us(delay_us); - // 数据接收 - // rxData <<= 1; - // if (SPI_READ_MISO()) - // { - // rxData |= 0x01; - // } - sys_delay_us(delay_us); - } - for (i = 0; i < 8; i++) - { - SPI_SCK_1(); - sys_delay_us(delay_us); - sys_delay_us(delay_us); - SPI_SCK_0(); - sys_delay_us(delay_us); - sys_delay_us(delay_us); + table[0][i] ? SPI_CS_1() : SPI_CS_0(); + table[1][i] ? SPI_SCK_1() : SPI_SCK_0(); + table[2][i] ? SPI_MOSI_1() : SPI_MOSI_0(); + sys_delay_us(spi_delay_us); } - - SPI_SCK_1(); - SPI_MOSI_1(); // 数据线空闲高电平 - sys_delay_us(delay_us); // symbol thi - sys_delay_us(delay_us); // symbol tsw - SPI_CS_1(); - - return rxData; -} - -uint8_t SPI_ReadByte(void) -{ - return SPI_ReadWriteByte(Dummy_Byte); -} - -void SPI_WriteByte(uint8_t txData) -{ - (void)SPI_ReadWriteByte(txData); } void user_main() @@ -134,8 +71,7 @@ void user_main() while (1) { - // dotable(); - SPI_ReadWriteByte(0x86); + dotable(); // HAL_UART_Transmit(&huart1, &temp, 1, 100); HAL_Delay(10); }