Просмотр исходного кода

e2prom r&w function test OK

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 лет назад
Родитель
Сommit
b6ca8f490d
4 измененных файлов с 8 добавлено и 45 удалено
  1. 3 39
      Application/bsp/AT24CXX.c
  2. 0 3
      Application/bsp/AT24CXX.h
  3. 2 0
      Application/bsp/bsp.c
  4. 3 3
      Application/bsp/i2c.c

+ 3 - 39
Application/bsp/AT24CXX.c

@@ -3,7 +3,7 @@
 
 void AT24CXX_Init(void)
 {
-	gd32_i2c_init(0, 100*1000);
+	gd32_i2c_init(0, 120*1000);//here, need 120K min speed, may be the GD lib is something wrong!!!!
 }
 
 uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr)
@@ -32,42 +32,6 @@ void AT24CXX_WriteOneByte(uint16_t WriteAddr,uint8_t DataToWrite)
 	
 }
 
-void AT24CXX_WriteLenByte(uint16_t WriteAddr,uint32_t DataToWrite,uint8_t Len)
-{  	
-	uint8_t t;
-	for(t=0;t<Len;t++)
-	{
-		AT24CXX_WriteOneByte(WriteAddr+t,(DataToWrite>>(8*t))&0xff);
-	}												    
-}
-
-
-uint32_t AT24CXX_ReadLenByte(uint16_t ReadAddr,uint8_t Len)
-{  	
-	uint8_t t;
-	uint32_t temp=0;
-	for(t=0;t<Len;t++)
-	{
-		temp<<=8;
-		temp+=AT24CXX_ReadOneByte(ReadAddr+Len-t-1); 	 				   
-	}
-	return temp;												    
-}
-
-uint8_t AT24CXX_Check(void)
-{
-	uint8_t temp;
-	temp=AT24CXX_ReadOneByte(255); 
-	if(temp==0X55)return 0;		   
-	else
-	{
-		AT24CXX_WriteOneByte(255,0X55);
-		temp=AT24CXX_ReadOneByte(255);	  
-		if(temp==0X55)return 0;
-	}
-	return 1;											  
-}
-
 void AT24CXX_Read(uint16_t ReadAddr,uint8_t *pBuffer,uint16_t NumToRead)
 {
 	uint8_t device_addr = 0xA0 | ((ReadAddr >>8) << 1);
@@ -107,9 +71,9 @@ void AT24CXX_Write(uint16_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite){
 
 #if 0
 
-#define ADDR_START 	(2<<7)
+#define ADDR_START 	(0)
 
-static U8 buffr[128];
+static uint8_t buffr[128];
 static int index = 0;
 static int _AT24CXX_test(void)
 {

+ 0 - 3
Application/bsp/AT24CXX.h

@@ -18,11 +18,8 @@
 #define PAGE_SIZE 16
 uint8_t AT24CXX_ReadOneByte(uint16_t ReadAddr);							//指定地址读取一个字节
 void AT24CXX_WriteOneByte(uint16_t WriteAddr,uint8_t DataToWrite);		//指定地址写入一个字节
-void AT24CXX_WriteLenByte(uint16_t WriteAddr,uint32_t DataToWrite,uint8_t Len);//指定地址开始写入指定长度的数据
-uint32_t AT24CXX_ReadLenByte(uint16_t ReadAddr,uint8_t Len);					//指定地址开始读取指定长度数据
 void AT24CXX_Write(uint16_t WriteAddr,uint8_t *pBuffer,uint16_t NumToWrite);	//从指定地址开始写入指定长度的数据
 void AT24CXX_Read(uint16_t ReadAddr,uint8_t *pBuffer,uint16_t NumToRead);   	//从指定地址开始读出指定长度的数据
-
 uint8_t AT24CXX_Check(void);  //检查器件
 void AT24CXX_Init(void); //初始化IIC
 #endif

+ 2 - 0
Application/bsp/bsp.c

@@ -1,6 +1,7 @@
 #include "bsp/shark_bsp.h"
 #include "bsp/gpio.h"
 #include "bsp/uart.h"
+#include "bsp/AT24CXX.h"
 
 #if defined CONFIG_BOARD_SP700
 const char iap_board_name[] __attribute__((at(0x08002800))) = "SP700";
@@ -20,6 +21,7 @@ void bsp_init(void){
 	SystemCoreClockUpdate();
 	shark_uart_init(SHARK_UART0);
 	shark_uart_init(SHARK_UART1);
+	AT24CXX_Init();
 }
 
 void wdog_start(int timeout){

+ 3 - 3
Application/bsp/i2c.c

@@ -46,8 +46,8 @@ static void gd32_i2c_busy_recovery(uint32_t i2c_periph){
 	if (i2c_periph == I2C0) {
 		gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_8|GPIO_PIN_9);
 		gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8|GPIO_PIN_9);
-		gpio_bit_set(GPIOB, GPIO_PIN_6);
-		gpio_bit_set(GPIOB, GPIO_PIN_7);
+		gpio_bit_set(GPIOB, GPIO_PIN_8);
+		gpio_bit_set(GPIOB, GPIO_PIN_9);
 	} else {
 		gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10|GPIO_PIN_11);
 		gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10|GPIO_PIN_11);
@@ -69,7 +69,7 @@ void gd32_i2c_init(uint32_t i2c_device, uint32_t rate){
 		gd32_i2c_busy_recovery(I2C0);
 		_i2c_deinit(I2C0);
 		gpio_af_set(GPIOB, GPIO_AF_1, GPIO_PIN_8|GPIO_PIN_9);
-		gpio_mode_af(GPIOB ,GPIO_PUPD_NONE, GPIO_PIN_8|GPIO_PIN_9);	 	
+		gpio_mode_af(GPIOB ,GPIO_PUPD_NONE, GPIO_PIN_8|GPIO_PIN_9);
 	} else {	
 		rcu_periph_clock_enable(RCU_I2C1);
 		gd32_i2c_busy_recovery(I2C1);