#include #include #include #include #include "main.h" #include "usart.h" #include "spi.h" #define READ_CMD 0x80 #define SPI_TIMEOUT_VALUE 1000 #define SPI_CS_Enable() HAL_GPIO_WritePin(SPI_SEL_GPIO_Port, SPI_SEL_Pin, GPIO_PIN_RESET) #define SPI_CS_Disable() HAL_GPIO_WritePin(SPI_SEL_GPIO_Port, SPI_SEL_Pin, GPIO_PIN_SET) bool BSP_Read(uint8_t *pData, uint8_t register_address, uint32_t Size) { uint8_t cmd; cmd = READ_CMD; if (register_address <= 0x3F) { cmd += register_address; } HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); SPI_CS_Enable(); HAL_SPI_Transmit(&hspi1, &cmd, 1, SPI_TIMEOUT_VALUE); // if (HAL_SPI_Receive(&hspi1, pData, Size, SPI_TIMEOUT_VALUE) != HAL_OK) // { // return false; // } SPI_CS_Disable(); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); return true; } // static void norflash_send_address(uint32_t address) // { // if (g_norflash_type == W25Q256) /* ֻ��W25Q256֧��4�ֽڵ�ַģʽ */ // { // spi1_read_write_byte((uint8_t)((address) >> 24)); /* ���� bit31 ~ bit24 ��ַ */ // } // spi1_read_write_byte((uint8_t)((address) >> 16)); /* ���� bit23 ~ bit16 ��ַ */ // spi1_read_write_byte((uint8_t)((address) >> 8)); /* ���� bit15 ~ bit8 ��ַ */ // spi1_read_write_byte((uint8_t)address); /* ���� bit7 ~ bit0 ��ַ */ // } uint8_t spi1_read_write_byte(uint8_t txdata) { uint8_t rxdata; HAL_SPI_TransmitReceive(&hspi1, &txdata, &rxdata, 1, 1000); return rxdata; } void norflash_read(uint8_t *pbuf, uint32_t addr, uint16_t datalen) { uint16_t i; SPI_CS_Enable(); spi1_read_write_byte(0X86); // for (i = 0; i < datalen; i++) // { // pbuf[i] = spi1_read_write_byte(0XFF); // } SPI_CS_Disable(); } void user_main() { uint8_t temp; SPI_CS_Disable(); while (1) { // BSP_Read(&temp, 0X06, 1); norflash_read(&temp, 0x06, 1); // HAL_UART_Transmit(&huart1, &temp, 1, 100); HAL_Delay(100); } }