直接上代码
#include <stdio.h>
#include <string.h>
#include "main.h"
extern SPI_HandleTypeDef hspi2;
#define SWRITE_CMD 0x61
#define SREAD_CMD 0x60
#define SPAGE 0xFF
#define STS 0xFE
#define SIO 0xF0
void read5396reg(uint8_t page, uint8_t offset, uint8_t len, uint8_t *rxbuf)
{
uint8_t txbuf[8] = {0};
HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_RESET);
txbuf[0] = SREAD_CMD; //cmd
txbuf[1] = STS; //status register
if(HAL_OK != HAL_SPI_Transmit(&hspi2, txbuf, 2, 1000))
printf("spi write status address failed!\n");
rxbuf[0] = 0;
if(HAL_OK != HAL_SPI_Receive(&hspi2, rxbuf, 1, 1000))
printf("spi read status failed\n");
HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_SET);
//printf("status: %02x\n", rxbuf[0]);
for(int j=0;j<10;j++)
__NOP();
//write
HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_RESET);
txbuf[0] = SWRITE_CMD; //cmd
txbuf[1] = SPAGE; //page register
txbuf[2] = page; //data
if(HAL_OK != HAL_SPI_Transmit(&hspi2, txbuf, 3, 1000))
printf("spi write page address failed!\n");
HAL_GPIO_WritePin(NSS_GPIO_Port, NSS_Pin, GPIO_PIN_SET);
//H