Globalsat TR-600G
Jump to navigation
Jump to search
This page collects the detailed hardware information for Globalsat TR-600GLONass tracker.
CPU
STM32F103RCT6
STM32_USART3 <-> GPS STM32_USART2 <-> GSM STM32_USART1 <-> RS232
RCC
RCC_DeInit(); RCC_HSICmd(ENABLE); // 1. Clocking the controller from internal HSI RC (8 MHz) while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); //RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); SYSCLK = HSI FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); // AHB clock (HCLK) = SYSCLK/1 RCC_PCLK2Config(RCC_HCLK_Div2); //High Speed APB2 clock (PCLK2) = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2); //Low Speed APB1 clock (PCLK1) = HCLK/2 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //ADCCLK=PCLK2/6 RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_6); //PLLCLK = HSI/2 *6 = 24 MHz RCC_PLLCmd(ENABLE); while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // RCC_SYSCLKSource_PLLCLK: PLL selected as system clock while (RCC_GetSYSCLKSource() !=0x08); // 0x08: PLL used as system clock NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x9800); // u32 NVIC_VectTab, u32 Offset NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOA|...,ENABLE); // AFIO,PA,PB,PC,PD RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE); /* PD01 Alternate Function mapping */ GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); /* Full SWJ Disabled (JTAG-DP + SW-DP) */
MAPR
GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
GPIO
0001 PA0 cfg AIN ADC1_IN0 AnalogIN 0002 PA1 cfg AIN ADC1_IN1 PCB_T 0004 PA2 + cfg A uart2tx gsm 0008 PA3 + cfg A uart2rx gsm 0010 PA4 cfg A SPI1_CS spi_flash =1 0020 PA5 + cfg A SPI1_CLK spi_flash 0040 PA6 + cfg A SPI1_MISO spi_flash 0080 PA7 + cfg A SPI1_MOSI spi_flash 0100 PA8 cfg O =0 0200 PA9 cfg A uart1rx rs232 0400 PA10 + cfg A uart1tx rs232 0800 PA11 + I ACC , ID=d IRQ iRQ REFE 1000 PA12 + cfg O ? =0 2000 PA13 + cfg O Dout1 =0 4000 PA14 cfg O fw related =0 8000 PA15 cfg O Dout3 =0
0001 PB0 cfg I ID=5 unused GSM_RI? IRQ iRQ FE 0002 PB1 cfg I ID=7 unused vib alrm IRQ iRQ RE 0004 PB2 + cfg I boot1 ID=e gps ant IRQ iRQ RE 0008 PB3 + cfg I tst in EMS, gps ant short 0010 PB4 cfg OI gps ant I ID=6 unused =0 0020 PB5 + cfg O I ID=8 unused =1 0040 PB6 cfg A I2C1_SCL 0080 PB7 cfg A I2C1_SDA 0100 PB8 cfg O Dout2 =0
EXTI
0 exti 1 Bit0 PB0 INT_GSM_RI? EXTI_Mode_Interrupt EXTI_Trigger_Falling EXTI0_IRQn,7 1 exti 2 Bit1 PB1 INT_VIBRATION EXTI_Mode_Interrupt EXTI_Trigger_Rising EXTI1_IRQn,9 2 exti 4 Bit2 + PB2 INT_GpsAntenna EXTI_Mode_Interrupt EXTI_Trigger_Rising EXTI2_IRQn,b 3 - 8 unused 4 exti_o 10 + PC4 INT_Din1 EXTI_Mode_Interrupt EXTI_Trigger_Rising_Falling EXTI4_IRQn,f 5 exti_o 20 + PC5 INT_Din2 EXTI_Mode_Interrupt EXTI_Trigger_Rising_Falling EXTI9_5_IRQn,f 6 - 40 unused 7 - 80 unused 8 - 100 unused 9 exti_o 200 + PC9 INT_Din3 EXTI_Mode_Interrupt EXTI_Trigger_Rising_Falling EXTI9_5_IRQn,f 10 - 400 unused 11 exti 800 Bit11 + PA11 INT_ACC ? EXTI_Mode_Interrupt EXTI_Trigger_Rising_Falling EXTI15_10_IRQn,e 12 - 1000 unused 13 exti 2000 Bit13 + PB13 INT_SOS EXTI_Mode_Interrupt EXTI_Trigger_Falling EXTI15_10_IRQn,e 14 exti 4000 Bit14 + PB14 INT_MainBatConn EXTI_Mode_Interrupt EXTI_Trigger_Falling EXTI15_10_IRQn,a 15 exti 8000 Bit15 PB15 INT_GSM_VDD? EXTI_Mode_Interrupt EXTI_Trigger_Falling EXTI15_10_IRQn,6
ADC
ADC_Mode=ADC_Mode_Independent, ADC_ScanConvMode=ENABLE, ADC_ContinuousConvMode=ENABLE, ADC_ExternalTrigConv=ADC_ExternalTrigConv_None, ADC_DataAlign=ADC_DataAlign_Right, ADC_NbrOfChannel=6 adc1,a,1,2 (MAIN_BAT) val*2850/4096*10 adc1,1,2,2 (PCB_T) TAB1(20000*val/(4095-val)) adc1,d,3,2 (Li_BAT) TAB2(val*2850/4096*2) adc1,c,4,2 (LiBat_T) TAB1(20000*val/(4095-val)) adc1,0,5,2 AnalogInput ? val*2850/4096*10 adc1,b,6,2 BackupBat? val*2850/4096*10
SPI
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
I2C
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = 0; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 100000;
DMA
Channel1 unused Channel2 uart3(gps)rx Channel3 uart3(gps)tx Channel4 uart1(comm)rx Channel5 uart1(comm)tx Channel6 uart2(gsm)rx Channel7 uart2(gsm)tx
GSM
Telit GE865-QUAD
GPS
NV08C-CSM v2.1
SPI flash
MXIC MX25L3206BZN
Firmware update
Bootloader mode
====================================================================== = (C) COPYRIGHT 2010 STMicroelectronics = = = = In-Application Programming Application (Version 3.3.0) = = By MCD Application Team = ================== Main Menu ============================ Download Image To the STM32F10x Internal Flash ------- 1 Upload Image From the STM32F10x Internal Flash ------- 2 Execute The New Program ------------------------------ 3 Disable the write protection ------------------------- 4 ==========================================================
================== Bootloader Main Menu ==================== FW Ver : F-0TR-60GOOO-11102851 HW Test FW Ver : F-0TR-60GMHT-11081551 Download Image To the STM32F10x Internal Flash --------- 1 Execute The New Program -------------------------------- 2 Download Image To External Serial Flash ---------------- 5 Download HW Test Image To the STM32F10x Internal Flash - 6 Execute The HW Test Program ---------------------------- 7 ============================================================ TEST MODE START GSM tr+din7=1 tr+din7=1 tr+din7=1 tr+din7=1
Custom firmware checksum algorithm
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <assert.h> #include <errno.h> #include <string.h> int calcrc(char *ptr, int count) { int crc, i; crc = 0; while (--count >= 0) { crc = crc ^ (int)*ptr++ << 8; for (i = 0; i < 8; ++i) if (crc & 0x8000) crc = crc << 1 ^ 0x1021; else crc = crc << 1; } return (crc & 0xFFFF); } typedef struct __attribute__ ((__packed__)) { int32_t magic1; char gsatdfu[8]; int32_t magic2; int32_t fw_len; int32_t fw_addr; char dfu_name[7*4]; int16_t _pad0; int16_t crc16; int16_t year; int8_t month; int8_t day; int8_t hour; int8_t min; int8_t sec; int8_t zero; } tr600_dfu_head; int main(int argc, char **argv) { size_t ilen; struct stat foo; FILE *ifd; char buf[256*1024]; int err; unsigned short crc; tr600_dfu_head *head; assert(sizeof(tr600_dfu_head) == 0x40); if (argc < 2 ) _exit(1); ifd=fopen(argv[1],"r"); if (!ifd) { fprintf(stderr,"can't open %s\n",argv[1]); _exit(1); } if ((err=stat((const char *)argv[1],&foo))== -1) { fprintf(stderr,"%s\n",strerror(err)); _exit(1); } ilen=fread(buf,1,foo.st_size,ifd); head=(tr600_dfu_head *)buf; crc=calcrc(&buf[0x40],ilen-0x40); printf ("magic1=\t\t0x%4.4x / len=0x%x\ngsatdfu=\t%s\nmagic2=\t\t0x%8.8x\nfw_len=\t\t%d / %d\nfw_addr=\t0x%8.8x\ndfuname=\t%s\ncrc=\t\t0x%4.4x / 0x%4.4x\ndatetime=\t%4.4d-%2.2d-%2.2dT%2.2d:%2.2d:%2.2d.%2.2d\n", (head->magic1&0xffff0000)>>16, head->magic1&0xffff, head->gsatdfu, head->magic2, head->fw_len, ilen-sizeof(tr600_dfu_head), head->fw_addr, head->dfu_name, head->crc16&0xffff, crc, head->year, head->month, head->day, head->hour, head->min, head->sec, head->zero ); return 0; }
Soft-switch to firmware update
Command=GSC,GlobalSatTR-600,LM*QQ! ====================================================== = (C) Copyright 2011 GlobalSat Technology Corp. = = TR-600G BootLoader F-0TR-60GBOT-11081551 = ====================================================== ================== Bootloader Main Menu ==================== FW Ver : F-0TR-60GOOO-11102851 HW Test FW Ver : F-0TR-60GMHT-11081551 Download Image To the STM32F10x Internal Flash --------- 1 Execute The New Program -------------------------------- 2 Download Image To External Serial Flash ---------------- 5 Download HW Test Image To the STM32F10x Internal Flash - 6 Execute The HW Test Program ---------------------------- 7 ============================================================
Enabling/Switching GNSS
GSS,<imei>,3,0,CE=0*QQ! gps+glonass GSS,<imei>,3,0,CE=1*QQ! gps only GSS,<imei>,3,0,CE=2*QQ! glonass only