|
@ -18,6 +18,22 @@ |
|
|
|
|
|
|
|
|
#define Dummy_Byte 0xFF // 读取时MISO发送的数据,可以为任意数据 |
|
|
#define Dummy_Byte 0xFF // 读取时MISO发送的数据,可以为任意数据 |
|
|
|
|
|
|
|
|
|
|
|
#define delay_us 5 |
|
|
|
|
|
|
|
|
|
|
|
// 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}, |
|
|
|
|
|
// }; |
|
|
|
|
|
|
|
|
void sys_delay_us(uint32_t us) |
|
|
void sys_delay_us(uint32_t us) |
|
|
{ |
|
|
{ |
|
|
uint16_t counter = 0; |
|
|
uint16_t counter = 0; |
|
@ -29,6 +45,17 @@ void sys_delay_us(uint32_t us) |
|
|
} |
|
|
} |
|
|
HAL_TIM_Base_Stop(&htim7); |
|
|
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可以同时读取和写入数据,因此一个函数即可满足要求 |
|
|
// SPI可以同时读取和写入数据,因此一个函数即可满足要求 |
|
|
uint8_t SPI_ReadWriteByte(uint8_t txData) |
|
|
uint8_t SPI_ReadWriteByte(uint8_t txData) |
|
@ -37,9 +64,9 @@ uint8_t SPI_ReadWriteByte(uint8_t txData) |
|
|
uint8_t rxData = 0; |
|
|
uint8_t rxData = 0; |
|
|
|
|
|
|
|
|
SPI_CS_0(); |
|
|
SPI_CS_0(); |
|
|
sys_delay_us(1); // symbol tsw |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); // symbol tsw |
|
|
SPI_SCK_0(); |
|
|
SPI_SCK_0(); |
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us + 3); |
|
|
|
|
|
|
|
|
for (i = 0; i < 8; i++) |
|
|
for (i = 0; i < 8; i++) |
|
|
{ |
|
|
{ |
|
@ -55,33 +82,33 @@ uint8_t SPI_ReadWriteByte(uint8_t txData) |
|
|
SPI_MOSI_0(); |
|
|
SPI_MOSI_0(); |
|
|
} |
|
|
} |
|
|
txData <<= 1; |
|
|
txData <<= 1; |
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
|
|
|
|
|
|
SPI_SCK_0(); |
|
|
SPI_SCK_0(); |
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
// 数据接收 |
|
|
// 数据接收 |
|
|
// rxData <<= 1; |
|
|
// rxData <<= 1; |
|
|
// if (SPI_READ_MISO()) |
|
|
// if (SPI_READ_MISO()) |
|
|
// { |
|
|
// { |
|
|
// rxData |= 0x01; |
|
|
// rxData |= 0x01; |
|
|
// } |
|
|
// } |
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
for (i = 0; i < 8; i++) |
|
|
for (i = 0; i < 8; i++) |
|
|
{ |
|
|
{ |
|
|
SPI_SCK_1(); |
|
|
SPI_SCK_1(); |
|
|
sys_delay_us(1); |
|
|
|
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
SPI_SCK_0(); |
|
|
SPI_SCK_0(); |
|
|
sys_delay_us(1); |
|
|
|
|
|
sys_delay_us(1); |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
|
|
|
sys_delay_us(delay_us); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
SPI_SCK_1(); |
|
|
SPI_SCK_1(); |
|
|
SPI_MOSI_1(); // 数据线空闲高电平 |
|
|
SPI_MOSI_1(); // 数据线空闲高电平 |
|
|
sys_delay_us(1); // symbol thi |
|
|
|
|
|
sys_delay_us(1); // symbol tsw |
|
|
|
|
|
|
|
|
sys_delay_us(delay_us); // symbol thi |
|
|
|
|
|
sys_delay_us(delay_us); // symbol tsw |
|
|
SPI_CS_1(); |
|
|
SPI_CS_1(); |
|
|
|
|
|
|
|
|
return rxData; |
|
|
return rxData; |
|
@ -107,8 +134,9 @@ void user_main() |
|
|
|
|
|
|
|
|
while (1) |
|
|
while (1) |
|
|
{ |
|
|
{ |
|
|
temp = SPI_ReadWriteByte(0x86); |
|
|
|
|
|
HAL_UART_Transmit(&huart1, &temp, 1, 100); |
|
|
|
|
|
HAL_Delay(100); |
|
|
|
|
|
|
|
|
// dotable(); |
|
|
|
|
|
SPI_ReadWriteByte(0x86); |
|
|
|
|
|
// HAL_UART_Transmit(&huart1, &temp, 1, 100); |
|
|
|
|
|
HAL_Delay(10); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |