查看: 5726|回复: 12

[MPC] 求教MPC5634 SCI模块中断发送数据失败!

[复制链接]

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
发表于 2014-12-30 16:51:08 | 显示全部楼层 |阅读模式
本帖最后由 plabghhahacong1988 于 2014-12-31 16:17 编辑

【结题】问题已解决,代码没有任何毛病,波特率可能不对头,换了一个波特率就好了!轮询和中断两种方式均可正常使用!


几乎全部都是默认的配置,但是调试好久了,一直没有调试成功!


初始化函数如下:
//开发送和接收中断、启动发送和接收模块、8位数据位、1位起始位、1位停止位
void Sci_Init(uint16 Sci_Baudratescaler)
{
        ESCI_A.CR2.B.MDIS = 0;
        ESCI_A.CR1.B.SBR  = Sci_Baudratescaler;
        ESCI_A.CR1.B.TIE = 1;
        ESCI_A.CR1.B.TE   = 1;
        SIU.PCR[89].B.PA  = 1;
        SIU.PCR[90].B.PA  = 1;
}

中断函数如下:
void eSCIA_Irq(void)
{
        /* 发送中断服务子程序 */
        if(1 == ESCI_A.SR.B.TDRE){
                ESCI_A.SR.B.TDRE = 1;
                ESCI_A.DR.B.D = Sci_TransData[TransReadId];
            }
        else
            ESCI_A.CR1.B.TIE = 0;
}


主函数中,中断函数的插装如下:
  INTC_InstallINTCInterruptHandler(eSCIA_Irq,146,7);

整个工程在附件中,调试很久了,一直不知道问题的所在,求指教!(系统频率8MHz,波特率9600)
现在的问题是:SCI模块中TDRE只在首次TIE置1后才为1,此时进入中断后,我会将TDRE清0,此后TDRE一直为0,再也进不去中断了。




我知道答案 目前已有12人回答
回复

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 17:01:12 | 显示全部楼层
貌似一直进不去中断,很奇怪!!!
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
发表于 2014-12-30 17:05:32 | 显示全部楼层
编译器安装路径下有例程,你可以参考下!
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
发表于 2014-12-30 17:09:05 | 显示全部楼层
试下可以了不

MPC5634_SCI_Trans1.zip

121.52 KB, 下载次数: 44

回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 17:11:14 | 显示全部楼层
霹雳小猪 发表于 2014-12-30 17:05
编译器安装路径下有例程,你可以参考下!

例程是轮询方式的,我用的是中断方式!
例程里面的跟我不一样!
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 17:14:56 | 显示全部楼层

你的附件里修改了什么内容?
我看了一下,没看出有什么变化!
回复 支持 反对

使用道具 举报

该用户从未签到

24

主题

666

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1072
最后登录
2023-4-10
发表于 2014-12-30 17:18:38 | 显示全部楼层
plabghhahacong1 发表于 2014-12-30 17:14
你的附件里修改了什么内容?
我看了一下,没看出有什么变化!

没修改你的代码,修改了工程文件自身的代码!如果还是不可以就是你自身初始化的问题了。要注意        ME.PCTL[x].R这个位很重要。
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 19:30:40 | 显示全部楼层
霹雳小猪 发表于 2014-12-30 17:18
没修改你的代码,修改了工程文件自身的代码!如果还是不可以就是你自身初始化的问题了。要注意        ME.PCTL[x ...

我试了,还是不行!
我对照着demo逐条的进行对比,没有找到问题!
有空没?
帮我看看?谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 20:43:13 | 显示全部楼层
霹雳小猪 发表于 2014-12-30 17:18
没修改你的代码,修改了工程文件自身的代码!如果还是不可以就是你自身初始化的问题了。要注意        ME.PCTL[x ...

高手,还在吗?
我刚刚试过了,已经可以了!
你改的哪里?
可以指教一下吗?
改的哪个文件?改了什么?
好神奇,谢谢,求指教!
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

52

帖子

0

中级会员

Rank: 3Rank: 3

积分
240
最后登录
2016-10-20
 楼主| 发表于 2014-12-30 20:53:24 | 显示全部楼层
霹雳小猪 发表于 2014-12-30 17:18
没修改你的代码,修改了工程文件自身的代码!如果还是不可以就是你自身初始化的问题了。要注意        ME.PCTL[x ...

是不是就在__ppc_eabi_init.c里面加了:
#ifndef CALL_USR_INIT
#define CALL_USR_INIT
#endif



加这个宏的目的是为什么?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 13:25 , Processed in 0.111817 second(s), 31 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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