使用StarterWare软件包创建多个串口收发工程,Uart1、Uart2、Ua... - 第2页 - AM437x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: wujianzhang
打印 上一主题 下一主题

使用StarterWare软件包创建多个串口收发工程,Uart1、Uart2、Ua...

[复制链接]

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
11#
 楼主| 发表于 2017-1-23 10:15:59 | 只看该作者
另外,关于DMA,uart_echo中的DMA是关闭的,与DMA应该是没有关系的
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
12#
 楼主| 发表于 2017-1-23 10:20:55 | 只看该作者
static int32_t UartAppSocInfoGet(uartAppObj_t *pObj)
{
    uint32_t status = S_PASS;

    /*Is the given resource present?*/
    if(TRUE == CHIPDBIsResourcePresent(CHIPDB_MOD_ID_UART, pObj->instNum))
    {
            /* Get the base address of the Module */
        pObj->instAddr = CHIPDBBaseAddress(CHIPDB_MOD_ID_UART, pObj->instNum);

        /* Update the Interrupt Line number */
        if(SOC_FAMILY_ID_AM43XX == SOCGetSocFamilyId())
        {
                switch(pObj->instNum)
                {
                case 0:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 104U;
                        break;
                case 1:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 105U;
                        break;
                case 2:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 106U;
                        break;
                case 3:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 76U;
                        break;
                default:
                        break;
                }

            pObj->uartAppCfg.dmaCfg.dmaType                                =        DMA_TYPE_ENHACED;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.dmaType         =         DMA_TYPE_ENHACED;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.instNum         =         0U;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.evtToChMapType = DMA_UTILS_EVENT_MAP_TYPE_DIRECT;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.evtNum         =         26U;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.chNum         =         26U;
            pObj->uartAppCfg.dmaCfg.rxEvtInfo.xferIdx         =         26U;
            pObj->uartAppCfg.dmaCfg.txEvtInfo.instNum         =         0U;
            pObj->uartAppCfg.dmaCfg.txEvtInfo.evtToChMapType = DMA_UTILS_EVENT_MAP_TYPE_DIRECT;
            pObj->uartAppCfg.dmaCfg.txEvtInfo.evtNum         =         26U;
            pObj->uartAppCfg.dmaCfg.txEvtInfo.chNum         =         26U;
            pObj->uartAppCfg.dmaCfg.txEvtInfo.xferIdx         =         26U;
        }
        else
        {
            if (pObj->instNum == 0)
            {
                pObj->uartAppCfg.uartAppIntrCfg.intrLine        =         72U;

                pObj->uartAppCfg.dmaCfg.dmaType                         =         DMA_TYPE_ENHACED;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.dmaType         =         DMA_TYPE_ENHACED;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.instNum         =         0U;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.evtToChMapType = DMA_UTILS_EVENT_MAP_TYPE_DIRECT;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.evtNum         =         27U;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.chNum         =         27U;
                pObj->uartAppCfg.dmaCfg.rxEvtInfo.xferIdx         =         27U;
                pObj->uartAppCfg.dmaCfg.txEvtInfo.instNum         =         0U;
                pObj->uartAppCfg.dmaCfg.txEvtInfo.evtToChMapType = DMA_UTILS_EVENT_MAP_TYPE_DIRECT;
                pObj->uartAppCfg.dmaCfg.txEvtInfo.evtNum         =         26U;
                pObj->uartAppCfg.dmaCfg.txEvtInfo.chNum         =         26U;
                pObj->uartAppCfg.dmaCfg.txEvtInfo.xferIdx         =        26U;
            }
            else if (pObj->instNum == 5) /* ICE v1 */
            {
                pObj->uartAppCfg.uartAppIntrCfg.intrLine = 46U;
                /* TBD: DMA Channels to be configured through cross bar */
            }
            else if (pObj->instNum == 3) /* ICE v2 */
            {
                pObj->uartAppCfg.uartAppIntrCfg.intrLine = 44U;
                /* TBD MA Channels to be configured through cross bar */
            }
        }
    }
    else
    {
        status = E_FAIL;
    }

    return status;
}
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
13#
 楼主| 发表于 2017-1-23 10:22:11 | 只看该作者
UartAppSocInfoGet()函数中的各个串口所对应的中断号,已经使用switch()语句进行了相应的设置了

switch(pObj->instNum)
                {
                case 0:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 104U;
                        break;
                case 1:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 105U;
                        break;
                case 2:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 106U;
                        break;
                case 3:
                        pObj->uartAppCfg.uartAppIntrCfg.intrLine = 76U;
                        break;
                default:
                        break;
                }
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
14#
 楼主| 发表于 2017-1-23 10:31:01 | 只看该作者
关于您回复的第一个图中的设置项目

/* Initialize the Board */
status = BOARDInit(NULL);

/* Get board info */
status = UartAppBoardInfoGet(&g_ObjUart0);
if (S_PASS == status)
{
            /* Config Uart*/
            status=InitUartObject(&g_ObjUart0);
}

我也根据uart_echo中已经可以使用的uart0进行了相应的配置

如下所示:

/* Initialize the Board */
status = BOARDInit(NULL);

/* Initialize the UART console */
CONSOLEUtilsInit();

/* Select the console type based on compile time check */
CONSOLEUtilsSetType(CONSOLE_UTILS_TYPE_UART);

/* Get board info */
status = UartAppBoardInfoGet(&g_ObjUart0);
if (S_PASS == status)
{
            /* Config Uart*/
            status=InitUartObject(&g_ObjUart0);
}

status=InitUartObject(&g_ObjUart1);
status=InitUartObject(&g_ObjUart2);
status=InitUartObject(&g_ObjUart3);

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
15#
 楼主| 发表于 2017-1-23 10:34:07 | 只看该作者
我查看了starterware中的pinmux生成的.h配置文件
发现只有关于uart0的pinmux配置

但是

没有拿到TI starterware默认的*.pinmux工程文件

我实在不知道如何进行UART1、UART2的管脚复用配置

使用自己创建的pinmux工程生成的.h配置文件,添加到Starterware中是编译不过去的
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
16#
 楼主| 发表于 2017-1-23 10:37:07 | 只看该作者
所以,现在嫌疑最大的,有可能是关于UART1、UART2的pinmux配置不对



又不知道如何下手

麻烦您了,谢谢!!!!
回复 支持 反对

使用道具 举报

7

主题

40

帖子

1133

积分

金牌会员

Rank: 6Rank: 6

积分
1133
17#
 楼主| 发表于 2017-1-24 00:24:25 | 只看该作者
问题已经搞定……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-26 18:25 , Processed in 0.034473 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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