From 59e59d7af14a328058214fa6cf8c835ad52bca73 Mon Sep 17 00:00:00 2001 From: Michael Colton Date: Thu, 21 Apr 2016 20:55:56 -0600 Subject: [PATCH] Simple test that the GPS module is indeed talking and the MCU can indeed hear it. It's dropping characters though, and it's polling based and whatnot, so it will need to change fast. Also, so far, in my office, the GPS hasn't gotten a lock. Is the antenna good enough? How about the antenna match? --- .gitignore | 14 +++++++ Hardware/PSDR.sch | Bin 525601 -> 525699 bytes Hardware/STM32F429_Config.ioc | 43 +++++++++++-------- Source/src/TinyGPS.c | 4 +- Source/src/main.c | 75 +++++++++++++++++++++------------- 5 files changed, 90 insertions(+), 46 deletions(-) diff --git a/.gitignore b/.gitignore index 1645c0b..4650c9d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,17 @@ Source/BlankF4-2.launch Source/StereoTurnerOnner.launch Hardware/~$PSDR.pcb.inf Hardware/Test Boards/~$MultiTestBoard2.pcb.inf +Hardware/PSDR.eco +Hardware/PSDR.rep +Hardware/PSDR_Layou1.pcb +Hardware/PSDR_Layou2.pcb +Hardware/PSDR_Layou3.pcb +Hardware/PSDR_Layout.pcb +Hardware/PSDR_Logic0.sch +Hardware/PSDR_Logic1.sch +Hardware/PSDR_Logic2.sch +Hardware/PSDR_Logic3.sch +Hardware/PSDR_PCB/3D/3DSettings.xml +Hardware/PSDR_PCB/PSDR_3DViewer.cce +Hardware/STM32F756_Config.ioc +Source/STM32F4 Test.launch diff --git a/Hardware/PSDR.sch b/Hardware/PSDR.sch index 090ae2b9252cda5bb7dbbbf55197e30793de9bff..4e8ba91eef7134133cee513f86594389c25c251b 100644 GIT binary patch delta 1771 zcmX|?YfKbZ6vywmv%`uCB6JsMBaDU^zlgQAA8JK+QCmx+K(G&ER1g;N#V&}!2e2Rt zDk_gnJ#A8TNqrTyqFAn`S|25dFLZ4+_&~6lXqqb3wu%+lp1ae`BzOPk&hPxsxp(%? zZvAGhyh>}dg@=yJV+@#|u35>mrz7lEV|YrDCpSEvzhCFsNirtY(@rw+f@dH+9-2L4 zBgVo0rg;&sRp8}wqQ#tO@U;!v^Z9Li+MRD&Md>B=D^*;41Yu_G_v78CFaQp`(*tf; zCg%PLT>vF`W|WeRp9Tmb*|+VGRIM*>l0F{V`hcyC3}fI13?z7Ev8&rSbuSV4PvWU z3i}7^n^X(dm*{mu+yNHG^4MPX7uHS+io_;2&ylr9lm^%kww5)pXS(lfsqPzF#w*Ny z{-LahJ;K_dY7|~Cjm*l{(p48CZ7+?P)4|pzmqIMtx5^HU?ah%|dvCT#1`> z*P%@Y$;aUqH5$`4>z-4a4e}X|w5nE2ui{Gs-%yo7_TczPs+PY+uhzN6APH!XqH5(^ z^=ePH8e{>cMpLz#ZF;r-Z3bC_8E=y3+iKktQezMo=DkIp#v0u-qBgMCP*%*EnGa)k zfECZx>T4KVXFP`=*;VwV21SWq>v*ztl;59o@11sLT-o$ud_b>8SJ#c!mE9}P)1jIE z9sdcUg{grr0Eoe?1EgcHBu+a>5-(Z~@+m+kOsL=U`2Yzb>#)pD!j?wfMY8({ z-$gR*D5cHE^-|KYv!3X_HFXTAs^QFOFO^T!y~%99~gm+4MDI-=3E;)B4l3@&jt**h0ms}TxrD23QO&C&>b7ikQ+#npwt9%^okZKQ zQOe`(_vrI?k#djv!5`S&Mbj7fb~lxKg}vQ0>lZWbbGrrO?t)e9dch|G-mf%SvF9aE zLf=M;l6xr{zloy5GLnfn>=i}N=$>%C;{Sr~cE6Tk?H02^oE?n22czzuB2{XJ&hkmqe?ZtG#cAOj5siyxSoybG&CDovq%%kV!n(n-H4F z>CL&J_w4Mb%!$%DQGB*_SmE~gl-qsJpV7TrZ1351TOS8I)O?a(Z}K3|my5U9%>{b? zAKcAcD#z=LLfQHpPtfgm_|vP#ei5Q|%-L zYoGxnH=uzIa?lFur+&#A3J4cZsVY>%NbZ*+Cy=D73>ri-(ygi;!zq}S(MQsA$`L7t z-0F2Tf+V^e86!#dm^z9ip#qtsX#}mIJ~?Q2M9H}dwL}GzB&|ii2Q1P`H)QhtfC#y= z7A%D1g-Wnci*?X-lR4#1B|3zWcGZZY!6-Z*L=GkEDlqt z2Yc9JNp!)_DjUG!F`)+B!6O#SlcEqjOYcUI37F4DxF%Ypkk0#EA2xzLidk&}d(2|R zbk5J3H-SBlX?egBXcU#wVLB_Z+t?{5Ja{UTFuBd>mT39DmhvE*Q+I4u*-m>HExG)p zWF^=`gSxxVw=C~jekvSq*{AAT9;0o0RUUJ^EZzs5D87Bl%?XmWA2M0{_N!!8&yu!( zre0xA*NYFD*;(RiQr$dHc7LvRaIT~sLRy}zGi9Op4#8U>Y0XG^L&trgjxm?W)h_|p zNZesanJhM?T<AabDR1f^DBA8D~a3_klN@pipw#kGG zkkhjA0%~^X$S$*0r=EAwZ1tNgxCGiKO{QGidKv%M^_!D&{G z#4_S^f9z&sFK1XOI$0TojHkZWFp3mrZ`DW)K=ML=+-S!6e&a1OF3{5)MmKYj|12>O zXUqI?W1!K+@A!T0Ae^t1wjiTw?8ijZ6Gk*}V8QU<>3`W%uy~!JWqkCM&6&7Eek+0Lo8(m>Fi>4Y_HY__9F$2g`F4PXGV_ diff --git a/Hardware/STM32F429_Config.ioc b/Hardware/STM32F429_Config.ioc index 2d5615d..8c77d8a 100644 --- a/Hardware/STM32F429_Config.ioc +++ b/Hardware/STM32F429_Config.ioc @@ -1,5 +1,5 @@ #MicroXplorer Configuration settings - do not modify -File.Version=5 +File.Version=6 KeepUserPlacement=false Mcu.Family=STM32F4 Mcu.IP0=DAC @@ -49,22 +49,29 @@ Mcu.Pin33=PB5 Mcu.Pin34=PB6 Mcu.Pin35=PB7 Mcu.Pin36=VP_ADC1_TempSens_Input -Mcu.Pin37=VP_TIM1_VS_ControllerModeGated -Mcu.Pin38=VP_TIM1_VS_ClockSourceINT -Mcu.Pin39=VP_TIM4_VS_ClockSourceINT +Mcu.Pin37=VP_SYS_VS_Systick +Mcu.Pin38=VP_TIM1_VS_ControllerModeGated +Mcu.Pin39=VP_TIM1_VS_ClockSourceINT Mcu.Pin4=PA1 +Mcu.Pin40=VP_TIM4_VS_ClockSourceINT Mcu.Pin5=PA4 Mcu.Pin6=PA5 Mcu.Pin7=PE7 Mcu.Pin8=PE9 Mcu.Pin9=PB10 -Mcu.PinsNb=40 +Mcu.PinsNb=41 Mcu.UserConstants= Mcu.UserName=STM32F429VITx -MxCube.Version=4.12.0 -MxDb.Version=DB.4.0.120 +MxCube.Version=4.14.0 +MxDb.Version=DB.4.0.140 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_0 -NVIC.SysTick_IRQn=true\:0\:0\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:false PA1.GPIOParameters=GPIO_Label PA1.GPIO_Label=BOOT1 PA1.Locked=true @@ -79,7 +86,7 @@ PA13.Mode=Serial-Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial-Wire PA14.Signal=SYS_JTCK-SWCLK -PA15.Mode=NSS_Signal_Hard +PA15.Mode=NSS_Signal_Hard_Input PA15.Signal=SPI1_NSS PA4.Signal=COMP_DAC1_group PA5.Signal=COMP_DAC2_group @@ -89,7 +96,7 @@ PB10.Mode=I2C PB10.Signal=I2C2_SCL PB11.Mode=I2C PB11.Signal=I2C2_SDA -PB12.Mode=NSS_Signal_Hard +PB12.Mode=NSS_Signal_Hard_Input PB12.Signal=SPI2_NSS PB13.Mode=Full_Duplex_Master PB13.Signal=SPI2_SCK @@ -145,7 +152,7 @@ PCC.Battery.SelfDischarge=10.0 PCC.Checker=false PCC.Line=STM32F429/439 PCC.MCU=STM32F429V(E-G-I)Tx -PCC.MXVersion=4.12.0 +PCC.MXVersion=4.14.0 PCC.PartNumber=STM32F429VITx PCC.Seq0=0 PCC.Series=STM32F4 @@ -180,7 +187,7 @@ RCC.EthernetFreq_Value=168000000 RCC.FCLKCortexFreq_Value=168000000 RCC.FamilyName=M RCC.HCLKFreq_Value=168000000 -RCC.HSE_VALUE=8000000 +RCC.HSE_VALUE=26000000 RCC.HSI_VALUE=16000000 RCC.I2SClocksFreq_Value=96000000 RCC.IPParameters=LSI_VALUE,FamilyName,APB1CLKDivider,HSE_VALUE,HSI_VALUE,RTCHSEDivFreq_Value,VCOInputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueR,LCDTFTFreq_Value,VCOSAIOutputFreq_ValueQ,VCOOutputFreq_Value,PLLCLKFreq_Value,PLLQCLKFreq_Value,VCOI2SOutputFreq_Value,VcooutputI2S,I2SClocksFreq_Value,VcooutputI2SQ,SYSCLKFreq_VALUE,AHBFreq_Value,HCLKFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,EthernetFreq_Value,MCO2PinFreq_Value,RTCFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,48MHZClocksFreq_Value,APB2CLKDivider,PLLM,PLLN,SYSCLKSource,PLLQ @@ -188,12 +195,12 @@ RCC.LCDTFTFreq_Value=12250000 RCC.LSI_VALUE=32000 RCC.MCO2PinFreq_Value=168000000 RCC.PLLCLKFreq_Value=168000000 -RCC.PLLM=8 +RCC.PLLM=26 RCC.PLLN=336 RCC.PLLQ=7 RCC.PLLQCLKFreq_Value=48000000 RCC.RTCFreq_Value=32000 -RCC.RTCHSEDivFreq_Value=4000000 +RCC.RTCHSEDivFreq_Value=13000000 RCC.SAI_AClocksFreq_Value=12250000 RCC.SAI_BClocksFreq_Value=12250000 RCC.SYSCLKFreq_VALUE=168000000 @@ -219,15 +226,19 @@ SH.S_TIM1_ETR.0=TIM1_ETR,TriggerSource_ETR SH.S_TIM1_ETR.ConfNb=1 SH.S_TIM4_CH1.0=TIM4_CH1,Output Compare1 CH1 SH.S_TIM4_CH1.ConfNb=1 +SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 SPI1.CalculateBaudRate=42.0 MBits/s -SPI1.IPParameters=Mode,CalculateBaudRate,VirtualNSS +SPI1.IPParameters=Mode,CalculateBaudRate,VirtualNSS,BaudRatePrescaler SPI1.Mode=SPI_MODE_MASTER SPI1.VirtualNSS=VM_NSSHARD +SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2 SPI2.CalculateBaudRate=21.0 MBits/s -SPI2.IPParameters=Mode,CalculateBaudRate,VirtualNSS +SPI2.IPParameters=Mode,CalculateBaudRate,VirtualNSS,BaudRatePrescaler SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualNSS=VM_NSSHARD VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT VP_TIM1_VS_ControllerModeGated.Mode=Gated Mode diff --git a/Source/src/TinyGPS.c b/Source/src/TinyGPS.c index b7df640..91943a1 100644 --- a/Source/src/TinyGPS.c +++ b/Source/src/TinyGPS.c @@ -107,7 +107,7 @@ void TinyGPS_init() } //Initial Uart setup - uart_init(hal_gpsUart); + //uart_init(hal_gpsUart); #ifdef SIRF_MODULE //TODO: Determine which of these delays can be eliminated or reduced @@ -139,7 +139,7 @@ void TinyGPS_init() #endif #ifdef MEDIATEK_MODULE //Send it something to wake it up - uart_write(hal_gpsUart, "\r\n", 2); + //uart_write(hal_gpsUart, "\r\n", 2); #endif } diff --git a/Source/src/main.c b/Source/src/main.c index 12c8eab..4b13d05 100644 --- a/Source/src/main.c +++ b/Source/src/main.c @@ -709,7 +709,6 @@ USART1_IRQHandler(void) } -GPIO_InitTypeDef GPIO_InitStruct; __IO ITStatus UartReady = RESET; uint8_t aTxBuffer[] = "Chris a baby! "; @@ -717,38 +716,58 @@ uint8_t aRxBuffer[256]; void configUartPeripheral() { // //Enable Clocks -// __GPIOB_CLK_ENABLE(); -// __USART1_CLK_ENABLE(); -// + __GPIOC_CLK_ENABLE(); + __USART6_CLK_ENABLE(); + + GPIO_InitTypeDef GPIO_InitStruct; + // //Setup TX Pin -// GPIO_InitStruct.Pin = GPIO_PIN_6; -// GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; -// GPIO_InitStruct.Pull = GPIO_NOPULL; -// GPIO_InitStruct.Speed = GPIO_SPEED_FAST; -// GPIO_InitStruct.Alternate = GPIO_AF7_USART1; -// -// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); -// -// //Setup RX Pin -// //It doesn't get set as an input? -// GPIO_InitStruct.Pin = GPIO_PIN_7; -// GPIO_InitStruct.Alternate = GPIO_AF7_USART1; -// -// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); -// + GPIO_InitStruct.Pin = RX_TO_GPS.pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FAST; + GPIO_InitStruct.Alternate = GPIO_AF8_USART6; + HAL_GPIO_Init(RX_TO_GPS.port, &GPIO_InitStruct); + + //Setup RX Pin + //It doesn't get set as an input? + GPIO_InitStruct.Pin = TX_FROM_GPS.pin; + GPIO_InitStruct.Alternate = GPIO_AF8_USART6; + HAL_GPIO_Init(TX_FROM_GPS.port, &GPIO_InitStruct); + + // //Configure NVIC // HAL_NVIC_SetPriority(USART1_IRQn, 0, 1); // HAL_NVIC_EnableIRQ(USART1_IRQn); // -// UartHandle.Instance = USART1; -// UartHandle.Init.BaudRate = 9600; -// UartHandle.Init.WordLength = UART_WORDLENGTH_8B; -// UartHandle.Init.StopBits = UART_STOPBITS_1; -// UartHandle.Init.Parity = UART_PARITY_NONE; -// UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; -// UartHandle.Init.Mode = UART_MODE_TX_RX; -// -// HAL_UART_Init(&UartHandle); + UartHandle.Instance = USART6; + UartHandle.Init.BaudRate = 9600; + UartHandle.Init.WordLength = UART_WORDLENGTH_8B; + UartHandle.Init.StopBits = UART_STOPBITS_1; + UartHandle.Init.Parity = UART_PARITY_NONE; + UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE; + UartHandle.Init.Mode = UART_MODE_TX_RX; + UartHandle.Init.OverSampling = UART_OVERSAMPLING_16; + + if(HAL_UART_Init(&UartHandle) != HAL_OK) + { + trace_puts("UART didn't init rightly."); + } + + TinyGPS_init(); + + while(1) + { + if(HAL_UART_Receive(&UartHandle, (uint8_t *)aRxBuffer, 256, 5000) != HAL_OK) + { + trace_puts("UART recieve didn't work. No sir."); + } else { + trace_puts(aRxBuffer); + for(int i = 0; i < 256; i++) + TinyGPS_encode(aRxBuffer[i]); + + } + } }