瀏覽代碼

Промежуточный коммит.

TelenkovDmitry 1 年之前
父節點
當前提交
76ed744f8f

二進制
doc/flash/MX25L1606E, 3V, 16Mb, v1.9.pdf


+ 2 - 1
fw/modules/adc/adc_transport.c

@@ -278,7 +278,8 @@ void adc_task(void *params)
     for (;;)
     {
         value = MS5192T_SingleConversion();
-        printf("ADC data raw: 0x%X, %f\r\n", value, (double)value*0.00001785305);
+        //printf("ADC data raw: 0x%X, %f\r\n", value, (double)value*0.00001785305);
+        printf("ADC data raw: 0x%X, %f\r\n", value, (double)value*0.00001785305/0.0961538);
         
         
         

+ 51 - 54
fw/modules/spi_flash/spi_flash.c

@@ -9,27 +9,13 @@
 
 #define SPI_FLASH			SPI3
 
-
-
-
 #define INCLUDE_SPI_TEST	0
 
-//SemaphoreHandle_t spi_mutex;
-
-static uint8_t spi_tx_rx(uint8_t byte) {
-    return common_spi_tx_rx(SPI_FLASH, byte);
-}
-
-
 #define CMD_WREN	0x06 // +
 #define CMD_WRDI	0x04 // +
 #define CMD_WRSR	0x01 // +
 #define CMD_RDSR	0x05 // +
-#if defined (FLASH_TYPE_AT25SF161)  
-#define CMD_READ	0x03 //0x0B // +
-#elif defined (FLASH_TYPE_MX25L1606E)
 #define CMD_READ	0x03 // +
-#endif
 #define CMD_SE		0x20 // + Block Erse 4 Kbytes 
 #define CMD_BE		0x52 // Block Erase 32 Kbytes 
 #define CMD_CE		0x60 // + Chip Erase
@@ -40,35 +26,57 @@ static uint8_t spi_tx_rx(uint8_t byte) {
 #define SR_WEL	(1 << 1)
 #define SR_SRWD	(1 << 7)
 
+
 static spi_flash_desc_t spi_flash_desc;
 
-static inline void wait_write_enable(void) {
+
+//
+static uint8_t spi_tx_rx(uint8_t byte) 
+{
+    return common_spi_tx_rx(SPI_FLASH, byte);
+}
+
+//
+static inline void wait_write_enable(void) 
+{
 	uint8_t status;
+    
 	SPI_FLASH_CS_L();
 	spi_tx_rx(CMD_RDSR);
-	do {
+	
+    do {
 		status = spi_tx_rx(0);
 	} while (!(status & SR_WEL));
+    
 	SPI_FLASH_CS_H();
 }
 
-static inline void wait_write_end(void) {
+//
+static inline void wait_write_end(void) 
+{
 	uint8_t status;
+    
 	SPI_FLASH_CS_L();
 	spi_tx_rx(CMD_RDSR);
-	do {
+	
+    do {
 		status = spi_tx_rx(0);
 	} while (status & SR_WIP);
-	SPI_FLASH_CS_H();
+	
+    SPI_FLASH_CS_H();
 }
 
-static inline void send_addr(int addr) {
+//
+static inline void send_addr(int addr) 
+{
 	spi_tx_rx((addr >> 16) & 0xFF);
 	spi_tx_rx((addr >> 8) & 0xFF);
 	spi_tx_rx(addr & 0xFF);
 }
 
-static int spi_flash_read_sfdp(int addr, void *buf, size_t len) {
+//
+static int spi_flash_read_sfdp(int addr, void *buf, size_t len) 
+{
     uint8_t *ptr = (uint8_t*)buf;
 	//xSemaphoreTake(spi_mutex, portMAX_DELAY);
 	SPI_FLASH_CS_L();
@@ -82,7 +90,9 @@ static int spi_flash_read_sfdp(int addr, void *buf, size_t len) {
 	return 0;
 }
 
-ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) {
+//
+ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) 
+{
     uint8_t *ptr = (uint8_t*)buf;
 	(void)timeout;
 	//xSemaphoreTake(spi_mutex, portMAX_DELAY);
@@ -98,7 +108,8 @@ ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout) {
 
 #define TIMEOUT 10000
 
-uint16_t spi_flash_pp(int addr, const void *buf, size_t len, uint32_t timeout) {
+uint16_t spi_flash_pp(int addr, const void *buf, size_t len, uint32_t timeout) 
+{
     uint8_t *ptr = (uint8_t*)buf;
 	(void)timeout;
 	ssize_t ret = 0;
@@ -125,7 +136,9 @@ uint16_t spi_flash_pp(int addr, const void *buf, size_t len, uint32_t timeout) {
 	return ret;
 }
 
-ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout) {
+//
+ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout) 
+{
 	(void)timeout;
 	int ret = 0, offset = 0;
 	do {
@@ -136,7 +149,9 @@ ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout)
 	return 0;
 }
 
-int spi_flash_chip_erase(uint32_t timeout) {
+//
+int spi_flash_chip_erase(uint32_t timeout) 
+{
 	(void)timeout;
 	//xSemaphoreTake(spi_mutex, portMAX_DELAY);
 	SPI_FLASH_CS_L();
@@ -153,7 +168,9 @@ int spi_flash_chip_erase(uint32_t timeout) {
 	return 0;
 }
 
-int spi_flash_erase_sector(int addr, uint32_t timeout) {
+//
+int spi_flash_erase_sector(int addr, uint32_t timeout) 
+{
 	(void)timeout;
  	//xSemaphoreTake(spi_mutex, portMAX_DELAY);
 	SPI_FLASH_CS_L();
@@ -172,23 +189,27 @@ int spi_flash_erase_sector(int addr, uint32_t timeout) {
 	return 0;
 }
 
+//
 unsigned int spi_flash_get_sector_size(void) {
 	return spi_flash_desc.sector_size;
 }
 
+//
 unsigned int spi_flash_get_sector_count(void) {
 	return spi_flash_desc.sector_count;
 }
 
+//
 unsigned int spi_flash_get_total_size(void) {
 	return spi_flash_desc.sector_count * spi_flash_desc.sector_size;
 }
 
+//
 bool spi_flash_is_init(void) {
 	return spi_flash_desc.present;
 }
 
-
+//
 bool spi_flash_init(void) 
 {
     bool ret = false;
@@ -197,6 +218,7 @@ bool spi_flash_init(void)
     SPI_FLASH_CS_H();
   
     spi_flash_get_id(tmp);
+    
     if (!(tmp[0] == 0x1F && tmp[1] == 0x86 && tmp[2] == 0x01))
     {
         ret = false;
@@ -222,26 +244,6 @@ bool spi_flash_init(void)
         return false;
   
 #if 0  
-#if defined (FLASH_TYPE_AT25SF161)  
-    
-    uint8_t tmp[4] = {0};
-    
-    SPI_FLASH_CS_H();
-  
-    spi_flash_get_id(tmp);
-    if (!(tmp[0] == 0x1F && tmp[1] == 0x86 && tmp[2] == 0x01))
-		return 0;
-    
-   	spi_flash_desc.sector_size = SPI_FLASH_SECTOR_SIZE;
-	spi_flash_desc.sector_erase_op = 32;
-	spi_flash_desc.sector_count = 512;
-	spi_flash_desc.present = true;
-
-    
-    return 1;
-    
-#elif defined (FLASH_TYPE_MX25L1606E)
-  
 	uint32_t i, ptable, bitsize = 0;
 	uint8_t tmp[4];
 
@@ -288,12 +290,8 @@ bool spi_flash_init(void)
 		return 0;
 
 	spi_flash_desc.present = true;
-    
-	return 1;
-    
-#endif
-    return 0;
 #endif    
+	return 1;
 }
 
 
@@ -320,15 +318,14 @@ void init_spi_mutex(void)
 
 void spi_flash_get_id(uint8_t *buf)
 {
- 	//xSemaphoreTake(spi_mutex, portMAX_DELAY);
 	SPI_FLASH_CS_L();
 	spi_tx_rx(0x9F);
+    
     *buf++ = spi_tx_rx(0);
     *buf++ = spi_tx_rx(0);
     *buf++ = spi_tx_rx(0);
     
 	SPI_FLASH_CS_H();
-	//xSemaphoreGive(spi_mutex);
 }
 
 // -------------------------------------------------------------------------- //

+ 57 - 53
fw/modules/spi_flash/spi_flash.h

@@ -1,53 +1,57 @@
-#ifndef SPI_FLASH_H
-#define SPI_FLASH_H
-
-#include <stdbool.h>
-#include <stdint.h>
-
-
-#if defined ( __ICCARM__ )
-#define ssize_t long
-#else
-#include <unistd.h>
-#endif
-
-
-#include "FreeRTOS.h"
-#include "task.h"
-#include "semphr.h"
-
-#define SPI_FLASH_SECTOR_SIZE		        4096
-#define SPI_FLASH_SECTORS_IN_BLOCK_NUMBER   16
-#define SPI_FLASH_BLOCK_SIZE                16
-#define SPI_FLASH_BLOCK_NUMBER		        32
-
-//extern SemaphoreHandle_t spi_mutex;
-
-typedef struct {
-	bool present;
-	uint32_t sector_size;
-	uint8_t sector_erase_op;
-	uint16_t sector_count;
-} spi_flash_desc_t;
-
-extern bool spi_flash_init(void);
-extern ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout);
-extern ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout);
-extern int spi_flash_erase_sector(int addr, uint32_t timeout);
-extern int spi_flash_chip_erase(uint32_t timeout);
-extern unsigned int spi_flash_get_sector_size(void);
-extern unsigned int spi_flash_get_sector_count(void);
-extern unsigned int spi_flash_get_total_size(void);
-bool spi_flash_is_init(void);
-bool spi_flash_test(void);
-
-//void init_spi_mutex(void);
-
-
-// -------------------------------------------------------------------------- //
-
-void spi_flash_get_id(uint8_t *buf);
-
-// -------------------------------------------------------------------------- //
-
-#endif /* SPI_FLASH_H */
+#ifndef SPI_FLASH_H
+#define SPI_FLASH_H
+
+#include <stdbool.h>
+#include <stdint.h>
+
+
+#if defined ( __ICCARM__ )
+#define ssize_t long
+#else
+#include <unistd.h>
+#endif
+
+
+#include "FreeRTOS.h"
+
+
+#define SPI_FLASH_SECTOR_SIZE		        4096
+#define SPI_FLASH_SECTORS_IN_BLOCK_NUMBER   16
+#define SPI_FLASH_BLOCK_SIZE                16
+#define SPI_FLASH_BLOCK_NUMBER		        32
+
+//extern SemaphoreHandle_t spi_mutex;
+
+typedef struct {
+	bool present;
+	uint32_t sector_size;
+	uint8_t sector_erase_op;
+	uint16_t sector_count;
+} spi_flash_desc_t;
+
+
+bool spi_flash_init(void);
+
+ssize_t spi_flash_read(int addr, void *buf, size_t len, uint32_t timeout);
+
+ssize_t spi_flash_write(int addr, const void *buf, size_t len, uint32_t timeout);
+
+int spi_flash_erase_sector(int addr, uint32_t timeout);
+
+int spi_flash_chip_erase(uint32_t timeout);
+
+unsigned int spi_flash_get_sector_size(void);
+
+unsigned int spi_flash_get_sector_count(void);
+
+unsigned int spi_flash_get_total_size(void);
+
+
+bool spi_flash_is_init(void);
+bool spi_flash_test(void);
+
+void spi_flash_get_id(uint8_t *buf);
+
+// -------------------------------------------------------------------------- //
+
+#endif /* SPI_FLASH_H */

+ 1 - 1
fw/user/main.c

@@ -155,7 +155,7 @@ void init_task(void *argument)
     //ai_connect_test();
     ai_mode_test();
     //ai_connect_channel(V_ISO);  
-    ai_connect_channel(V_ISO_CL);  
+    ai_connect_channel(AN_INP_1);  
     ai_connect_channel(AN_INP_7);  
     
 // -------------------------------------------------------------------------- //    

二進制
output/fw.bin


File diff suppressed because it is too large
+ 330 - 329
project/ewarm/iap/iap.dep


File diff suppressed because it is too large
+ 616 - 616
project/ewarm/module_universal_io.dep


+ 184 - 185
shared/board/common_config.h

@@ -1,186 +1,185 @@
-#ifndef COMMON_CONFIG_H
-#define COMMON_CONFIG_H
-
-#include "at32f403a_407.h"
-
-#ifdef DEBUG
-#define DBG
-#else
-#undef DBG
-#define DBG if (0)
-#endif
-
-
-/**
-  * @brief  Маркер ревизии платы для валидации *.bin файла
-  *
-  */
-#define HW_REV_LEN                      16
-
-#define HW_REV_OFFSET                   0x1F0
-
-#define HW_REV                          "MT_M03"
-
-/**
-  * @brief  Название модели устройства
-  */
-#define MODEL							"Метролог M3"
-
-/**
-  * @brief  Производитель
-  */
-#define MANUFACTURER                    "АО \"НПК РоТеК\""
-
-/**
-  * @brief  Версия прошивки
-  */
-#define VERSION                         "1.00.01"
-
-/**
-  * @brief  MD5 CRC
-  */
-#define MD5_CRC                         "BF704428A06FE45359B2037ADBAA2C6E"
-   
-/**
-  * @brief  Адрес сектора настроек
-  */ 	
-#define SETTINGS_SECTOR                 0x08020000
-
-/**
-  * @brief  Адрес CRC настроек
-  */ 	
-#define CRC_ADDRESS                     0x080207FC
-
-/**
-  * @brief  Адрес сектора системных настроек
-  */
-#define SYS_SECTOR         		        0x08020800  
-
-/**
-  * @brief  Адрес CRC системных настроек
-  */
-#define SYS_CRC_ADDRESS                 0x08020FFC
-
-/**
-  * @brief  Слово для контроля целостности структуры настроек
-  */ 	
-#define SETTINGS_CONTROL_WORD           123456789
-
-/**
-  * @brief  Число (-1) попыток загрузки основной прошивки
-  */
-#define BOOT_TRY                        26
-
-/**
-  * @brief  Таймаут возврата в основное ПО, сек.
-  */
-#define UPDATE_TIMEOUT                  120
-
-#define USER_FLASH_FIRST_PAGE_ADDRESS   0x08021000  
-
-#define USER_FLASH_END_ADDRESS          0x080C0FFF  
-#define USER_FLASH_CRC_ADDRESS          0x080C0FFC 
-
-#define FLASH_SECTOR_SIZE               0x800
-
-#define IAP_FLASH_FIRST_PAGE_ADDRESS    0x08000000  // Only as example see comment
-#define IAP_FLASH_CRC_ADDRESS           0x0801FFFC
-
-#define SYSTEMTICK_PERIOD_MS            1
-
-   
-    
-// Абсолютный адрес основоного FW 
-#define FW_BEGIN_ADDRESS	            0x08021000 
-    
-#define FLASH_PAGE_SIZE                 0x00000800U
-
-// Номер первой страницы FW     
-//#define FW_FIRST_PAGE		((FW_BEGIN_ADDRESS - 0x08000000)/2048)    
-    
-    
-//
-#define MQTT_CLIENT
-
-
-// LwIP Software watchdog
-//#define SOFTWARE_LWIP_WATCHDOG
-
-//
-#define USB_RNDIS
-
-/**
-  * @brief  Название файла прошивки
-  */
-#define MAIN_FW_NAME        "MT_M03.bin"
-
-/**
-  * @brief  Название файла прошивки (backup)
-  */
-#define BACKUP_MAIN_FW_NAME "BACKUP.bin"
-
-/**
-  * @brief  Вкл/выкл лог
-  */
-#define LOG_ENABLE
-
-/**
-  * @brief  Название файла лога
-  */
-#define LOG_NAME            "LOG.txt"
-
-
-//#define FLASH_TYPE_AT25SF161
-#define FLASH_TYPE_MX25L1606E
-
-// -------------------------------------------------------------------------- //
-
-typedef enum
-{
-    MB_REV_0 = 0,
-    MB_REV_1 = 1,
-    MB_REV_2 = 2,
-    MB_REV_3 = 3,
-    MB_REV_4 = 4,
-    MB_REV_5 = 5,
-    MB_REV_6 = 6,
-    MB_REV_7 = 7,
-  
-} MBOARD_REV_t;
-
-typedef enum
-{
-    DB_ABS    = 0,
-    DB_REV_1  = 1,
-    DB_REV_2  = 2,
-    DB_REV_3  = 3,
-    DB_REV_4  = 4,
-    DB_REV_5  = 5,
-    DB_REV_6  = 6,
-    DB_REV_7  = 7,
-    DB_REV_8  = 8,
-    DB_REV_9  = 9,
-    DB_REV_10 = 10,
-  
-} DBOARD_REV_t;
-
-
-typedef enum
-{
-    ADC_PWR_MEAS = 0,
-    ADC_DB_REV = 1,
-    ADC_MB_REV = 2,
-        
-} ADC_REV_CH_t;
-
-
-extern uint8_t mboard_rev;  // Ревизия основной платы
-extern uint8_t dboard_rev;  // Ревизия дочерней платы
-
-
-
-
-
-#endif /* #ifndef COMMON_CONFIG_H */
-
+#ifndef COMMON_CONFIG_H
+#define COMMON_CONFIG_H
+
+#include "at32f403a_407.h"
+
+#ifdef DEBUG
+#define DBG
+#else
+#undef DBG
+#define DBG if (0)
+#endif
+
+
+/**
+  * @brief  Маркер ревизии платы для валидации *.bin файла
+  *
+  */
+#define HW_REV_LEN                      16
+
+#define HW_REV_OFFSET                   0x1F0
+
+#define HW_REV                          "MT_M03"
+
+/**
+  * @brief  Название модели устройства
+  */
+#define MODEL							"Метролог M3"
+
+/**
+  * @brief  Производитель
+  */
+#define MANUFACTURER                    "АО \"НПК РоТеК\""
+
+/**
+  * @brief  Версия прошивки
+  */
+#define VERSION                         "1.00.01"
+
+/**
+  * @brief  MD5 CRC
+  */
+#define MD5_CRC                         "BF704428A06FE45359B2037ADBAA2C6E"
+   
+/**
+  * @brief  Адрес сектора настроек
+  */ 	
+#define SETTINGS_SECTOR                 0x08020000
+
+/**
+  * @brief  Адрес CRC настроек
+  */ 	
+#define CRC_ADDRESS                     0x080207FC
+
+/**
+  * @brief  Адрес сектора системных настроек
+  */
+#define SYS_SECTOR         		        0x08020800  
+
+/**
+  * @brief  Адрес CRC системных настроек
+  */
+#define SYS_CRC_ADDRESS                 0x08020FFC
+
+/**
+  * @brief  Слово для контроля целостности структуры настроек
+  */ 	
+#define SETTINGS_CONTROL_WORD           123456789
+
+/**
+  * @brief  Число (-1) попыток загрузки основной прошивки
+  */
+#define BOOT_TRY                        26
+
+/**
+  * @brief  Таймаут возврата в основное ПО, сек.
+  */
+#define UPDATE_TIMEOUT                  120
+
+#define USER_FLASH_FIRST_PAGE_ADDRESS   0x08021000  
+
+#define USER_FLASH_END_ADDRESS          0x080C0FFF  
+#define USER_FLASH_CRC_ADDRESS          0x080C0FFC 
+
+#define FLASH_SECTOR_SIZE               0x800
+
+#define IAP_FLASH_FIRST_PAGE_ADDRESS    0x08000000  // Only as example see comment
+#define IAP_FLASH_CRC_ADDRESS           0x0801FFFC
+
+#define SYSTEMTICK_PERIOD_MS            1
+
+   
+    
+// Абсолютный адрес основоного FW 
+#define FW_BEGIN_ADDRESS	            0x08021000 
+    
+#define FLASH_PAGE_SIZE                 0x00000800U
+
+// Номер первой страницы FW     
+//#define FW_FIRST_PAGE		((FW_BEGIN_ADDRESS - 0x08000000)/2048)    
+    
+    
+//
+#define MQTT_CLIENT
+
+
+// LwIP Software watchdog
+//#define SOFTWARE_LWIP_WATCHDOG
+
+//
+#define USB_RNDIS
+
+/**
+  * @brief  Название файла прошивки
+  */
+#define MAIN_FW_NAME        "MT_M03.bin"
+
+/**
+  * @brief  Название файла прошивки (backup)
+  */
+#define BACKUP_MAIN_FW_NAME "BACKUP.bin"
+
+/**
+  * @brief  Вкл/выкл лог
+  */
+#define LOG_ENABLE
+
+/**
+  * @brief  Название файла лога
+  */
+#define LOG_NAME            "LOG.txt"
+
+
+#define FLASH_TYPE_MX25L1606E
+
+// -------------------------------------------------------------------------- //
+
+typedef enum
+{
+    MB_REV_0 = 0,
+    MB_REV_1 = 1,
+    MB_REV_2 = 2,
+    MB_REV_3 = 3,
+    MB_REV_4 = 4,
+    MB_REV_5 = 5,
+    MB_REV_6 = 6,
+    MB_REV_7 = 7,
+  
+} MBOARD_REV_t;
+
+typedef enum
+{
+    DB_ABS    = 0,
+    DB_REV_1  = 1,
+    DB_REV_2  = 2,
+    DB_REV_3  = 3,
+    DB_REV_4  = 4,
+    DB_REV_5  = 5,
+    DB_REV_6  = 6,
+    DB_REV_7  = 7,
+    DB_REV_8  = 8,
+    DB_REV_9  = 9,
+    DB_REV_10 = 10,
+  
+} DBOARD_REV_t;
+
+
+typedef enum
+{
+    ADC_PWR_MEAS = 0,
+    ADC_DB_REV = 1,
+    ADC_MB_REV = 2,
+        
+} ADC_REV_CH_t;
+
+
+extern uint8_t mboard_rev;  // Ревизия основной платы
+extern uint8_t dboard_rev;  // Ревизия дочерней платы
+
+
+
+
+
+#endif /* #ifndef COMMON_CONFIG_H */
+
 /********************************* (C) РОТЕК **********************************/

Some files were not shown because too many files changed in this diff