ks22 MCU can0和UART1可以相互通讯但是can1和UART2通讯有问题,这是什么情况,我只是替换can0位can1,UART1为UART2、大神请指导。

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ks22 MCU can0和UART1可以相互通讯但是can1和UART2通讯有问题,这是什么情况,我只是替换can0位can1,UART1为UART2、大神请指导。

Jump to solution
4,790 Views
kiva
Contributor III

MCU型号为MKS22FN128VLH12。

这个例程的位置SDK_2.0_MAPS-KS22\boards\mapsks22\demo_apps

Original Attachment has been moved to: FlexCAN_UART_can1-mcu-uart2.rar

Labels (1)
1 Solution
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi K iva,

    由于你现在CAN0+UART1是可以工作的,所以建议你先做一个问题定位的测试。

    1. CAN0+UART2 是否工作?

    2. CAN1+UART1是否工作?

  这样可以看出到底是哪个配置有问题,另外,以CAN0+UART2为例,不知道你修改了哪些部分?你需要把board.h中相关的UART改掉。

  请先测试下,然后把你的测试结果告诉我!


Have a great day,
Jingjing

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

0 Kudos
14 Replies
4,321 Views
kiva
Contributor III

hi,kerryzhou

     不好意思,我回复的时候加了图的,不知怎么就没了,我重新发下我的修改

#define EXAMPLE_CAN  CAN0

#define EXAMPLE_CAN  CAN1

然后根据datasheet中还改动了pin_mux.c中的管教配置。如下图

根据datasheet中can1引脚改动pin_mux.c文件.png

别的没有动什么,为什么通信会失败,打开canalyst调试软件时提示发送失败(这个软件是没问题的can0-UART1正常)。如下图

canalyst软件显示错误图示.png

分析应该是can节点没有正常工作,不知再怎么改动处理,是我的can1-UART1可以通讯,最终能使can1-UART2可以通讯。

硬件图为:看上去看不出来can与收发器之间的关系,也不知用这个是can0有一路收发器,can1有一路收发器还是can0和can1公用一路。图如下

can电路图.png

请帮忙分析下。谢谢!

      非常感谢!

0 Kudos
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好!

新拿到一块MAPS板子,没有看到DOCK板子上有两个CAN收发器,不知道你用的什么板子?自己做的板子吗?

首先你要保证你硬件上面有这个CAN收发器,然后才能和CAN调试器连接。

另外,你有没有用示波器直接测试芯片CAN1引脚出来的波形,看看发送的时候,是否有波形?

Jingjing

0 Kudos
4,321 Views
kiva
Contributor III

Hi,jingjing你好

这个不是我自己做的板子,是代理商给的一个开发用的板子,我们自己的板子还没出来,问题已经解决了。非常感谢。用的mcu型号为MKS22FN128VLH12。

非常感谢一路的支持!

0 Kudos
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

楼主你好!

你这个原理图关于CAN收发器的,是从MAPS-DOCK板子的原理图上弄下来的吗?

你可以把你MAPS KS22的板子给我拍个照片吗?如果有版本号也发给我看看。

因为我现在这边的DOCK板子上只有一个CAN模块,所以我要看看你的板子,也去申请套,好帮你测试。

Jingjing

0 Kudos
4,321 Views
kiva
Contributor III

Hi,kerryzhou

你好,根据你昨天的建议我查了收发器和cpu相应管教的电平我发现问题了,是我canalyst上的一个拨码开关没拨对。现在can1-UART1可以正常通讯了。

非常感谢你的支持!谢谢!如果以后还有问题,希望可以继续找你帮忙!

0 Kudos
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi K iva,

问题解决了就好!

所以使用示波器检查波形是非常重要的。

后续有问题,欢迎重新发问题贴交流!


Have a great day,
Jingjing

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

4,322 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi K iva,

    由于你现在CAN0+UART1是可以工作的,所以建议你先做一个问题定位的测试。

    1. CAN0+UART2 是否工作?

    2. CAN1+UART1是否工作?

  这样可以看出到底是哪个配置有问题,另外,以CAN0+UART2为例,不知道你修改了哪些部分?你需要把board.h中相关的UART改掉。

  请先测试下,然后把你的测试结果告诉我!


Have a great day,
Jingjing

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
4,321 Views
kiva
Contributor III

Hi,kerryzhou

你好,为了先知道UART2是怎么跑起来的,我以修改helloword的例子为测试,如果debug口要用UART1,则要用systemclock是120MHz,若想要用UART2则需要busclock是60MHz,但是在代码中哪里是配置这个的UART2的时钟的。我找了一下午都没找到。

还有你上次说到的can0-UART2之间的通讯也是不通的,我怀疑跟这个时钟有关系。所以想先解决了以UART2座位debug口的这个helloword例程先跑通。

请协助下,谢谢!

0 Kudos
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

Hi K iva,

    你好! 你现在用的板子是自己的板子还是MAPS板呢?

    如果是自己的板子,想使能UART2的话,你可以参考这个代码:C:\Freescale\SDK2.0.0_KS22F_1.0.0\boards\mapsks22\driver_examples\uart\polling\iar

不过需要做一些修改,主要是把UART1换为UART2。

1:uart_polling.c中,定义:

#define DEMO_UART UART2

#define DEMO_UART_CLKSRC  kCLOCK_BusClk

2:pin_mux.c 中void BOARD_InitPins(void) 函数里面

配置相关的PORT口,也就是你硬件板上UART2所用的口,打开PORT口时钟,另外,配置PORT_SetPinMux为你UART2相关的PORT口以及MUX值。

其余就不需要修改了,你先把你的UART2调通试试。

希望能帮到你,如果还有问题,欢迎继续发帖交流!


Have a great day,
jingjing

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

4,321 Views
kiva
Contributor III

hi,kerryzhou

经过你的提醒,UART2串口是没有问题了,但是我在调试can1-UART1之间通信时,can1是有问题的,看了can0和can1是相同的模块啊,我之前的can0-UART1之间的通信时没有问题,我只是替换了

#define EXAMPLE_CAN CAN0

#define EXAMPLE_CAN CAN1

然后根据datasheet中还改动了pin_mux.c中的管教配置。如下图

别的没有动什么,为什么通信会失败,打开canalyst调试软件时提示发送失败(这个软件是没问题的can0-UART1正常)。如下图

分析应该是can节点没有正常工作,不知再怎么改动处理,是我的can1-UART1可以通讯,最终能使can1-UART2可以通讯。

请帮忙分析下。谢谢!

非常感谢!

0 Kudos
4,321 Views
kerryzhou
NXP TechSupport
NXP TechSupport

你好!

你的图片我一个都看不到,附件打不开,你可以上传之后插入进去。

你修改之后,可以用示波器测试下相关引脚,另外, MAPS板子上只有一路的CAN收发器,如果你改为CAN1,你CAN1的相关引脚也要加收发器才能和can调试器通信。

所以,你先检查下硬件,用示波器测测看是否有波形。


Have a great day,
Jingjing

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
4,321 Views
kiva
Contributor III

hi,kerryzhou

我使用的是就是MAPS板,非常感谢你的提醒。UART2可以用作debug口了。这个完成了,我就可以确定接着调试can1--UART2之间的通讯了。如有疑问,还望你可以为我解答下!

非常感谢!

0 Kudos
4,321 Views
kiva
Contributor III

CAN0+UART2 通讯还是有问题,can0可以发送出去但是UART2这里看不到接受到的数据。(我使用的是SSCOM工具查串口输出数据的)

0 Kudos
4,321 Views
kiva
Contributor III

Hi,Jingjing Zhou

     因为在main函数中我没有打开BOARD_InitDebugConsole();这个接口,所以我在board.h中并没有改动。而是修改了pin_mux.c文件。不知你说的要修改board.h是要修改什么?请明示一下。

     非常感谢!

0 Kudos