You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.0 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include <stdbool.h>
  2. #include <stdint.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include "main.h"
  6. #include "usart.h"
  7. #include "spi.h"
  8. #define READ_CMD 0x80
  9. #define SPI_TIMEOUT_VALUE 1000
  10. #define SPI_CS_Enable() HAL_GPIO_WritePin(SPI_SEL_GPIO_Port, SPI_SEL_Pin, GPIO_PIN_RESET)
  11. #define SPI_CS_Disable() HAL_GPIO_WritePin(SPI_SEL_GPIO_Port, SPI_SEL_Pin, GPIO_PIN_SET)
  12. bool BSP_Read(uint8_t *pData, uint8_t register_address, uint32_t Size)
  13. {
  14. uint8_t cmd;
  15. cmd = READ_CMD;
  16. if (register_address <= 0x3F)
  17. {
  18. cmd += register_address;
  19. }
  20. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);
  21. SPI_CS_Enable();
  22. HAL_SPI_Transmit(&hspi1, &cmd, 1, SPI_TIMEOUT_VALUE);
  23. // if (HAL_SPI_Receive(&hspi1, pData, Size, SPI_TIMEOUT_VALUE) != HAL_OK)
  24. // {
  25. // return false;
  26. // }
  27. SPI_CS_Disable();
  28. HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET);
  29. return true;
  30. }
  31. // static void norflash_send_address(uint32_t address)
  32. // {
  33. // if (g_norflash_type == W25Q256) /* ֻ��W25Q256֧��4�ֽڵ�ַģʽ */
  34. // {
  35. // spi1_read_write_byte((uint8_t)((address) >> 24)); /* ���� bit31 ~ bit24 ��ַ */
  36. // }
  37. // spi1_read_write_byte((uint8_t)((address) >> 16)); /* ���� bit23 ~ bit16 ��ַ */
  38. // spi1_read_write_byte((uint8_t)((address) >> 8)); /* ���� bit15 ~ bit8 ��ַ */
  39. // spi1_read_write_byte((uint8_t)address); /* ���� bit7 ~ bit0 ��ַ */
  40. // }
  41. uint8_t spi1_read_write_byte(uint8_t txdata)
  42. {
  43. uint8_t rxdata;
  44. HAL_SPI_TransmitReceive(&hspi1, &txdata, &rxdata, 1, 1000);
  45. return rxdata;
  46. }
  47. void norflash_read(uint8_t *pbuf, uint32_t addr, uint16_t datalen)
  48. {
  49. uint16_t i;
  50. SPI_CS_Enable();
  51. spi1_read_write_byte(0X86);
  52. // for (i = 0; i < datalen; i++)
  53. // {
  54. // pbuf[i] = spi1_read_write_byte(0XFF);
  55. // }
  56. SPI_CS_Disable();
  57. }
  58. void user_main()
  59. {
  60. uint8_t temp;
  61. SPI_CS_Disable();
  62. while (1)
  63. {
  64. // BSP_Read(&temp, 0X06, 1);
  65. norflash_read(&temp, 0x06, 1);
  66. // HAL_UART_Transmit(&huart1, &temp, 1, 100);
  67. HAL_Delay(100);
  68. }
  69. }