add eeprom stuff

This commit is contained in:
Wolfgang Hottgenroth 2017-06-07 20:09:53 +02:00
parent 4739491654
commit 6a7b54dcc1
10 changed files with 123 additions and 24 deletions

View File

@ -51,6 +51,8 @@
#define ROTARY_A_GPIO_Port GPIOB
#define SWITCH_Pin GPIO_PIN_5
#define SWITCH_GPIO_Port GPIOB
#define EEPROM_CS_Pin GPIO_PIN_6
#define EEPROM_CS_GPIO_Port GPIOB
#define OLED_CS_Pin GPIO_PIN_7
#define OLED_CS_GPIO_Port GPIOB
#define OLED_DC_Pin GPIO_PIN_8

View File

@ -223,7 +223,7 @@ static void MX_GPIO_Init(void)
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : LED_Pin ERROR_Pin */
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
@ -237,8 +237,8 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

View File

@ -140,6 +140,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
/**SPI1 GPIO Configuration
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
@ -147,6 +148,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI1_MspInit 1 */
/* USER CODE END SPI1_MspInit 1 */
@ -167,9 +173,10 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
/**SPI1 GPIO Configuration
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
}
/* USER CODE BEGIN SPI1_MspDeInit 1 */

View File

@ -27,21 +27,23 @@ Mcu.Name=STM32F103C(8-B)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PC14-OSC32_IN
Mcu.Pin10=PB4
Mcu.Pin11=PB5
Mcu.Pin12=PB7
Mcu.Pin13=PB8
Mcu.Pin14=PB9
Mcu.Pin15=VP_SYS_VS_Systick
Mcu.Pin10=PB3
Mcu.Pin11=PB4
Mcu.Pin12=PB5
Mcu.Pin13=PB6
Mcu.Pin14=PB7
Mcu.Pin15=PB8
Mcu.Pin16=PB9
Mcu.Pin17=VP_SYS_VS_Systick
Mcu.Pin2=PD0-OSC_IN
Mcu.Pin3=PD1-OSC_OUT
Mcu.Pin4=PA0-WKUP
Mcu.Pin5=PA5
Mcu.Pin6=PA7
Mcu.Pin7=PA13
Mcu.Pin8=PA14
Mcu.Pin9=PB3
Mcu.PinsNb=16
Mcu.Pin6=PA6
Mcu.Pin7=PA7
Mcu.Pin8=PA13
Mcu.Pin9=PA14
Mcu.PinsNb=18
Mcu.UserConstants=
Mcu.UserName=STM32F103C8Tx
MxCube.Version=4.16.1
@ -64,9 +66,11 @@ PA13.Mode=Serial_Wire
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
PA5.Mode=TX_Only_Simplex_Unidirect_Master
PA5.Mode=Full_Duplex_Master
PA5.Signal=SPI1_SCK
PA7.Mode=TX_Only_Simplex_Unidirect_Master
PA6.Mode=Full_Duplex_Master
PA6.Signal=SPI1_MISO
PA7.Mode=Full_Duplex_Master
PA7.Signal=SPI1_MOSI
PB3.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
PB3.GPIO_Label=ROTARY_B
@ -86,6 +90,10 @@ PB5.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
PB5.GPIO_PuPd=GPIO_PULLUP
PB5.Locked=true
PB5.Signal=GPXTI5
PB6.GPIOParameters=GPIO_Label
PB6.GPIO_Label=EEPROM_CS
PB6.Locked=true
PB6.Signal=GPIO_Output
PB7.GPIOParameters=GPIO_Label
PB7.GPIO_Label=OLED_CS
PB7.Locked=true

View File

@ -51,6 +51,8 @@
#define ROTARY_A_GPIO_Port GPIOB
#define SWITCH_Pin GPIO_PIN_5
#define SWITCH_GPIO_Port GPIOB
#define EEPROM_CS_Pin GPIO_PIN_6
#define EEPROM_CS_GPIO_Port GPIOB
#define OLED_CS_Pin GPIO_PIN_7
#define OLED_CS_GPIO_Port GPIOB
#define OLED_DC_Pin GPIO_PIN_8

55
my_src/eeprom.c Normal file
View File

@ -0,0 +1,55 @@
/*
* eeprom.c
*
* Created on: Jun 7, 2017
* Author: wn
*/
#include "eeprom.h"
#include "stm32f1xx_hal.h"
#define HIGH GPIO_PIN_SET
#define LOW GPIO_PIN_RESET
extern SPI_HandleTypeDef hspi1;
const uint8_t EEPROM_READ = 0x03;
const uint8_t EEPROM_WRITE = 0x02;
const uint8_t EEPROM_WRDI = 0x04;
const uint8_t EEPROM_WREN = 0x06;
const uint8_t EEPROM_RDSR = 0x05;
const uint8_t EEPROM_WRSR = 0x01;
static void __EEPROM_CS(GPIO_PinState v) {
HAL_GPIO_WritePin(EEPROM_CS_GPIO_Port, EEPROM_CS_Pin, v);
}
static void __HAL_SPI_Transmit_One_ByValue(SPI_HandleTypeDef *hspi, uint8_t c) {
HAL_SPI_Transmit(hspi, &c, 1, 0);
}
void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len) {
__EEPROM_CS(LOW);
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_WREN);
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_WRITE);
HAL_SPI_Transmit(&hspi1, (uint8_t*)&addr, 2, 0);
HAL_SPI_Transmit(&hspi1, buf, len, 0);
__EEPROM_CS(HIGH);
}
void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len) {
__EEPROM_CS(LOW);
__HAL_SPI_Transmit_One_ByValue(&hspi1, EEPROM_READ);
HAL_SPI_Transmit(&hspi1, (uint8_t*)&addr, 2, 0);
HAL_SPI_Receive(&hspi1, buf, len, 0);
__EEPROM_CS(HIGH);
}

18
my_src/eeprom.h Normal file
View File

@ -0,0 +1,18 @@
/*
* eeprom.h
*
* Created on: Jun 7, 2017
* Author: wn
*/
#ifndef EEPROM_H_
#define EEPROM_H_
#include "stm32f1xx_hal.h"
void eepromWrite(uint16_t addr, uint8_t *buf, uint8_t len);
void eepromRead(uint16_t addr, uint8_t *buf, uint8_t len);
#endif /* EEPROM_H_ */

View File

@ -227,7 +227,7 @@ static void MX_GPIO_Init(void)
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : LED_Pin ERROR_Pin */
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
@ -241,8 +241,8 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

View File

@ -223,7 +223,7 @@ static void MX_GPIO_Init(void)
HAL_GPIO_WritePin(GPIOC, LED_Pin|ERROR_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : LED_Pin ERROR_Pin */
GPIO_InitStruct.Pin = LED_Pin|ERROR_Pin;
@ -237,8 +237,8 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pins : OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
/*Configure GPIO pins : EEPROM_CS_Pin OLED_CS_Pin OLED_DC_Pin OLED_RST_Pin */
GPIO_InitStruct.Pin = EEPROM_CS_Pin|OLED_CS_Pin|OLED_DC_Pin|OLED_RST_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

View File

@ -140,6 +140,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
/**SPI1 GPIO Configuration
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;
@ -147,6 +148,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI1_MspInit 1 */
/* USER CODE END SPI1_MspInit 1 */
@ -167,9 +173,10 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
/**SPI1 GPIO Configuration
PA5 ------> SPI1_SCK
PA6 ------> SPI1_MISO
PA7 ------> SPI1_MOSI
*/
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_7);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
}
/* USER CODE BEGIN SPI1_MspDeInit 1 */