OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7337|回复: 10

第一次调CAN总线,修改的是原子哥的程序,就改了IO口PB8,PB9加了映射,但是一直没有数据输出,求各位大神指点!!拜托了

[复制链接]

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
发表于 2016-4-21 10:50:28 | 显示全部楼层 |阅读模式
5金钱
第一次调CAN总线,修改的是原子哥的程序,就改了IO口PB8,PB9加了映射,但是一直没有数据输出,用示波器看了,PB8和PB9没有波形。但是程序我应该没改其他什么的了,是还有什么地方要改么?。我用的是自己画的100脚的(连接正常),原子哥的是144脚的。我看了下144脚的PB8和PB9是没有CAN的,不过芯片我选的是STM32F103VE.这样程序有问题么?搞了几天了都没结果?求各位大神指点!!拜托了! 8DP{2Q2QTFK]0JB${2]GS]5.png @NM9JX4X`_EG2]Z)YGX(5_C.png

实验25 CAN收发实验.rar

2.02 MB, 下载次数: 286

最佳答案

查看完整内容[请看2#楼]

复用时钟没开,这一句:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 改成:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2014-4-14
在线时间
104 小时
发表于 2016-4-21 10:50:29 | 显示全部楼层
本帖最后由 翼间 于 2016-4-21 12:01 编辑

复用时钟没开,这一句:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
改成:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-21 10:57:28 | 显示全部楼层

can是差分信号,幅度很小,
会不会测量有问题?


回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
 楼主| 发表于 2016-4-21 11:04:46 | 显示全部楼层
xuande 发表于 2016-4-21 10:57
can是差分信号,幅度很小,
会不会测量有问题?

应该不会~我测得PB8和PB9都是0V一条直线~STM32这边出去的应该没有差分说法吧!
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11546
金钱
11546
注册时间
2014-4-1
在线时间
1315 小时
发表于 2016-4-21 11:36:29 | 显示全部楼层
萧萧 发表于 2016-4-21 11:04
应该不会~我测得PB8和PB9都是0V一条直线~STM32这边出去的应该没有差分说法吧!


如果是直接测量IO口,那就应当是普通TTL电平。

另外,只有频繁发送数据才会有波形,
串口、SPI、IIC都是这样。


回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
 楼主| 发表于 2016-4-21 11:50:12 | 显示全部楼层
xuande 发表于 2016-4-21 11:36
如果是直接测量IO口,那就应当是普通TTL电平。

另外,只有频繁发送数据才会有波形,

恩!我在主函数里面一直         调用原子哥的这个发送函数,应该是有波形的,问题都没有~我在想是不是映射出问题了。但是又没找到原因。如果是做普通IO口操作是可是实现高地电平的控制的。所以很郁闷
while(1)
        {

                Can_Send_Msg(canbuf,8);
        }
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
 楼主| 发表于 2016-4-21 15:51:55 | 显示全部楼层
翼间 发表于 2016-4-21 11:59
复用时钟没开,这一句:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
改成:RCC_APB2PeriphClo ...

对的,是这个问题,我的错,已经有波形了,谢谢。再问个问题,我看网上说CAN重映射很重要,然后我就试着映射到PD0和PD1上,就把 GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE)和PB8,9口改成GPIO_PinRemapConfig(GPIO_Remap2_CAN1, ENABLE)和PD1,0,原本PB8已经出现波形了,可以已改成GPIO_Remap2_CAN1和PD1就没有了,一直显示高电平,是我没改对么?我见网上是说这样改的,麻烦啦 BD2{`U($LRG[S722Y5NJP$Q.png
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
 楼主| 发表于 2016-4-21 16:51:40 | 显示全部楼层
萧萧 发表于 2016-4-21 15:51
对的,是这个问题,我的错,已经有波形了,谢谢。再问个问题,我看网上说CAN重映射很重要,然后我就试着 ...

找到问题了,没注意看外接设备。不好意思!谢谢了
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2014-9-9
在线时间
19 小时
 楼主| 发表于 2016-5-8 23:41:12 | 显示全部楼层
现在又发现个问题,我拿开发板的CAN总线发送8个”3C“数据,用自己画的板子来接收,烧的是原子哥的程序,一开始是没有反应的,后来屏蔽了“ //   if( CAN_MessagePending(CAN1,CAN_FIFO0)==0)return 0;” 1.png
就可以接收了,我进can.h里面看这句话应该没错啊!为什么接收不了了!!
然后我尝试开启中断,结果发现仿真的时候进入不了中断里面设置的断点~数据是一直在发的~正常不是应该触发中断进入中断程序么?求各位帮忙解答~万分感谢。

)I0``DFP)A3657@DW(_P9.png NRK((HC%(BT37`8]QZ3810J.png 7K011P4YW0S7()GX[$H3)91.png
JB7CG((7SU3CW4`$3MT56Z7.png

实验25 CAN收发实验.rar

2.03 MB, 下载次数: 1019

进入不了中断

回复

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-5-22
在线时间
7 小时
发表于 2016-5-29 12:47:58 | 显示全部楼层
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
我按照这个修改后,我用万用板测量了VP230的CANH和CANL,发现这两段的电压怎么还是0V啊?望高手给予指导。谢谢!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-15
在线时间
0 小时
发表于 2016-6-15 11:50:37 | 显示全部楼层
萧萧 发表于 2016-5-8 23:41
现在又发现个问题,我拿开发板的CAN总线发送8个”3C“数据,用自己画的板子来接收,烧的是原子哥的 ...

楼主问题解决了吗?请教收不到数据的问题
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 05:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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