|
|
@ -49,21 +49,98 @@ void sys_delay_us(uint32_t us) |
|
|
|
HAL_TIM_Base_Stop(&htim7); |
|
|
|
} |
|
|
|
|
|
|
|
void dotable() |
|
|
|
void set_spi_table_sel(uint8_t startoff) |
|
|
|
{ |
|
|
|
for (size_t i = 0; i < spi_table_type_size; i++) |
|
|
|
{ |
|
|
|
if (i < startoff) |
|
|
|
{ |
|
|
|
table[SPI_SEL_TYPE][i] = 1; |
|
|
|
} |
|
|
|
else if (i >= startoff && i < (startoff + 33)) |
|
|
|
{ |
|
|
|
table[SPI_SEL_TYPE][i] = 0; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
table[SPI_SEL_TYPE][i] = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void set_spi_table_sck(uint8_t startoff) |
|
|
|
{ |
|
|
|
bool clocklevel = false; |
|
|
|
for (size_t i = 0; i < spi_table_type_size; i++) |
|
|
|
{ |
|
|
|
if (i < startoff) |
|
|
|
{ |
|
|
|
table[SPI_SCK_TYPE][i] = 1; |
|
|
|
} |
|
|
|
else if (i >= startoff && i < (startoff + 32)) |
|
|
|
{ |
|
|
|
|
|
|
|
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(); |
|
|
|
(clocklevel) ? (table[SPI_SCK_TYPE][i] = 1) : (table[SPI_SCK_TYPE][i] = 0); |
|
|
|
clocklevel = !clocklevel; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
table[SPI_SCK_TYPE][i] = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void set_spi_table_mosi(uint8_t startoff, uint8_t txdata) |
|
|
|
{ |
|
|
|
HAL_UART_Transmit(&huart1, &txdata, 1, 100); |
|
|
|
for (size_t i = 0; i < spi_table_type_size; i++) |
|
|
|
{ |
|
|
|
if (i < startoff) |
|
|
|
{ |
|
|
|
table[SPI_MOSI_TYPE][i] = 1; |
|
|
|
} |
|
|
|
else if (i >= startoff && i < (startoff + 8)) |
|
|
|
{ |
|
|
|
(txdata & 0x80) ? (table[SPI_MOSI_TYPE][i] = 1) : (table[SPI_MOSI_TYPE][i] = 0); |
|
|
|
txdata = txdata << 1; |
|
|
|
HAL_UART_Transmit(&huart1, &txdata, 1, 100); |
|
|
|
} |
|
|
|
else if (i <= spi_table_type_size - 2) |
|
|
|
{ |
|
|
|
table[SPI_MOSI_TYPE][i] = 0; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
table[SPI_MOSI_TYPE][i] = 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void dotable(uint8_t txdata) |
|
|
|
{ |
|
|
|
int sel_startoff = 4; |
|
|
|
int clock_startoff = 5; |
|
|
|
int mosi_startoff = 5; |
|
|
|
|
|
|
|
memset(&table[SPI_MOSI_TYPE][0], 0, spi_table_type_size); |
|
|
|
memset(&table[SPI_SCK_TYPE][0], 0, spi_table_type_size); |
|
|
|
|
|
|
|
set_spi_table_sel(sel_startoff); |
|
|
|
set_spi_table_sck(clock_startoff); |
|
|
|
set_spi_table_mosi(mosi_startoff, txdata); |
|
|
|
|
|
|
|
for (size_t i = 0; i < spi_table_type_size; i++) |
|
|
|
{ |
|
|
|
table[SPI_SEL_TYPE][i] ? SPI_CS_1() : SPI_CS_0(); |
|
|
|
table[SPI_SCK_TYPE][i] ? SPI_SCK_1() : SPI_SCK_0(); |
|
|
|
table[SPI_MOSI_TYPE][i] ? SPI_MOSI_1() : SPI_MOSI_0(); |
|
|
|
sys_delay_us(spi_delay_us); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void user_main() |
|
|
|
{ |
|
|
|
uint8_t temp; |
|
|
|
// uint8_t temp; |
|
|
|
|
|
|
|
SPI_CS_1(); // 片选 |
|
|
|
SPI_SCK_1(); // 时钟空闲高电平 |
|
|
@ -71,7 +148,7 @@ void user_main() |
|
|
|
|
|
|
|
while (1) |
|
|
|
{ |
|
|
|
dotable(); |
|
|
|
dotable(0x86); |
|
|
|
// HAL_UART_Transmit(&huart1, &temp, 1, 100); |
|
|
|
HAL_Delay(10); |
|
|
|
} |
|
|
|