搜索
bottom↓
回复: 10

GPS驱动开发全纪录 -- EB365

[复制链接]

出0入0汤圆

发表于 2012-12-26 11:12:00 | 显示全部楼层 |阅读模式
本帖最后由 mcy_cool 于 2012-12-26 11:25 编辑

前几天在网上买的一个GPS模块到货了,准备为其写一个GPS驱动。
硬件平台采用购买的arduino接口的GPS模块,GPS芯片是EB-365,该芯片完全兼容U-Blox。下面是模块图片:

主控板采用CooCox推出的Cookie板,该主控板完全兼容arduino接口,同时还扩展和丰富了其功能,详细情况可参见CooCox官网中关于Cookie板的介绍。
软件采用CooCox推出的CoIDE编译器,函数库采用的是CooCox为了实现基于M3、M0、M0+、M4内核的各种芯片上平滑移植的目标而推出的CoX固件库。

初步阅读芯片手册,整理出一下指令方式和信息:
GGA:时间、位置、定位类型
GLL:UTC时间、经度、纬度
GSA:GPS接收机操作模式、定位使用的卫星、DOP值
GSV:可见GPS卫星信息、仰角、方位角、信噪比(SNR)
RMC:时间、日期、位置、速度
注意:输出的信息、频率与设置有关

同时注意北京时间比UTC时间快8小时,因此在处理时间时应特别注意时间变换和闰平年的问题。

下面开始具体编写驱动程序……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-12-26 11:12:54 | 显示全部楼层
楼主你的图呢

出0入0汤圆

 楼主| 发表于 2012-12-26 11:26:27 | 显示全部楼层
kevinstar888 发表于 2012-12-26 11:12
楼主你的图呢

呵呵,刚刚网络不给力啊,现在上传了GPS模块的实物图片

出0入0汤圆

发表于 2012-12-26 12:04:35 | 显示全部楼层
不错不错

出0入0汤圆

 楼主| 发表于 2012-12-27 10:32:29 | 显示全部楼层
该GPS模块采用的是UART接口,默认波特率是9600,对应的是arduino的UART1,因此我将Cookie板的UART1设为9600,8,1,0.同时采用中断接收,GPS的数据帧都是以'$'为开头标志,以'\n'为结束标志,在接收时我们就以这为根据一次接收一帧数据,同时申请一个全局标志,当接收完成,该标志置1,当接收到的数据处理完成,该标志置0. 串口中断初始化与接收程序如下:
//*****************************************************************************
//
//! \brief UART1 Interrupt Receive Service.
//!
//! \param None.
//!
//! \return None.
//
//*****************************************************************************
unsigned char num = 0;
//
//! You need to define these variables in the main.c and initialize to 0.
//
extern char rev_buf[80];        //Receive Buffer
extern unsigned char rev_start, //Receiving start flag
                     rev_stop,  //Receiving end flag
                     gps_flag;  //GPS Processed flag
unsigned long
uart1CallbackFunc(void *pvCBData, unsigned long ulEvent,  
                   unsigned long ulMsgParam, void *pvMsgData)                                  
{
    unsigned char ch;  
    ch = UARTCharGet(sUART_BASE);
    if ((ch == '$') && (gps_flag == 0))
    {
        rev_start = 1;
        rev_stop  = 0;                  
    }
    if (rev_start == 1)
    {
        rev_buf[num++] = ch;  
        if (ch == '\n')      
        {
            rev_buf[num] = '\0';
            rev_start = 0;
            rev_stop  = 1;          
            gps_flag = 1;
            num = 0;
        }
    }
    return 0;
}

//*****************************************************************************
//
//! \brief UART1 Initialize.
//!
//! \param ulBaudrate is the baud rate of UART1.
//!
//! \return None.
//
//*****************************************************************************
void
UART1_Init(unsigned long ulBaudrate)
{
    xSysCtlPeripheralReset(xSYSCTL_PERIPH_UART1);
    xSysCtlPeripheralEnable(xSYSCTL_PERIPH_UART1);
    xSysCtlPeripheralClockSourceSet(xSYSCTL_UART0_MAIN, 1);
    xSysCtlPeripheralEnable(xGPIOSPinToPeripheralId(sD0));

    sPinTypeUART(sUART_BASE);
       
    xUARTConfigSet(sUART_BASE, ulBaudrate, (UART_CONFIG_WLEN_8   |
                                            UART_CONFIG_STOP_ONE |
                                            UART_CONFIG_PAR_NONE));
    xUARTIntEnable(sUART_BASE, xUART_INT_RX);
    UARTIntCallbackInit(sUART_BASE, uart1CallbackFunc);
    xUARTEnable(sUART_BASE, (UART_BLOCK_UART | UART_BLOCK_TX | UART_BLOCK_RX));
    xIntEnable(xINT_UART1);
}

//*****************************************************************************
//
//! \brief GPS Initialize.
//!
//! \param ulBaudrate is the baud rate of GPS.
//!
//! \return None.
//
//*****************************************************************************
void
GPS_Init(unsigned long ulBaudrate)
{
    UART1_Init(ulBaudrate);   // 默认是9600
}

现在正在调试各个数据帧的解析程序,调试成功将一起上传。

出0入0汤圆

发表于 2013-1-8 15:45:40 | 显示全部楼层
期待中......

出0入0汤圆

 楼主| 发表于 2013-1-14 09:39:06 | 显示全部楼层
现将驱动代码全部上传

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-1-8 16:09:19 | 显示全部楼层
好东西谢谢分享

出0入0汤圆

发表于 2016-1-8 16:22:06 | 显示全部楼层
好东西谢谢分享

出0入0汤圆

发表于 2016-1-16 17:49:36 | 显示全部楼层
支持!!谢谢分享

出0入0汤圆

发表于 2016-1-16 22:42:13 | 显示全部楼层
mark一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 19:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表