主题中讨论的其他器件: MAX3232
工具/软件:Code Composer Studio
大家好
我正在尝试将 U-blox Neo6M GPS 传感器连接到 EK-TM4C123GXL launchpad。 我的连接如下;
GPS Tx -> TM4C PC4
TM4C Debug USB -> PC
我正在尝试从 UART 4 (PC4-PC5)读取 GPS 数据、甚至无需触摸它、通过 UART0和 USB 电缆直接传递到 PC。 为了安全起见、我将源代码基于 UART_echo 示例。 并尝试执行为 UART4的 UART0执行的所有操作(复制函数调用、参数更改为 UART4相关参数)。
我的源代码如下
#include
#include
include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib_integree"#def_ude.idt_idt_intru.idt_idt_u.idt_inu.idt.idt_u.idt_u.idt.h #include #include "#idt.inc"#def_inu.idt.idt.idt_inu.idt_inu.idt.idt.idt.idt_u.idt.idt.id
uint32_t ui32Status0;
uint32_t ui32Status1;
ui32Status0 = ROM_UARTIntStatus (UART0_BASE、TRUE);
ROM_UARTIntClear (UART0_BASE、ui32Status0);
ui32Status1 = ROM_UARTIntStatus (UART4_base、true);
ROM_UARTIntClear (UART4_base、ui32Status1);
while (ROM_UARTCharsAvail (UART4_base))
{
ROM_UARTCharPutNonBlocking (UART0_BASE、ROM_UARTCharGetNonBlocking (UART4_base));
}
}
空 UARTSend (const uint8_t * pui8Buffer、uint32_t ui32Count)
{
while (ui32Count---)
{
ROM_UARTCharPutNonBlocking (UART0_BASE、* pui8Buffer++);
}
}
int
main (void)
{
ROM_FPUEnable();
ROM_FPULazyStackingEnable();
ROM_SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART4);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
ROM_IntMasterEnable();
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
GPIOPinConfigure (GPIO_PC4_U4RX);
GPIOPinConfigure (GPIO_PC5_U4TX);
ROM_GPIOPinTypeUART (GPIO_PORTC_BASE、GPIO_PIN_4 | GPIO_PIN_5);
ROM_UARTConfigSetExpClk (UART0_BASE、ROM_SysCtlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
ROM_UARTConfigSetExpClk (UART4_base、ROM_SysCtlClockGet ()、9600、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
ROM_IntEnable (INT_UART0);
ROM_UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT);
ROM_IntEnable (INT_UART4);
ROM_UARTIntEnable (UART4_base、UART_INT_RX | UART_INT_RT);
UARTSend ((uint8_t *)"\033[2JEnter 文本:"、16);
while (1)
{
}
}
当我调试代码时、暂停一段时间后、代码在 FaultISR 函数的无限循环处停止。
我可能犯了一些根本错误、因为所有 UART 可能不完全相同、可能我需要另一个电路、如 MAX3232。 您能帮我解决这个问题吗?
注意:我可以在 TM4C 上测试 UART_ECHO 示例二进制文件、以便至少 UART0正常工作。
GPS 数据表为 :www.u-blox.com/.../NEO-6_DataSheet_(GPS.G6-HW-09005).pdf