注册 登录
查看: 20250|回复: 73

[K60] 【一天攻破K60】 BUG 汇总

[复制链接]
发表于 2013-12-13 12:20:40 | 显示全部楼层 |阅读模式
任何代码都会有bug,我们的代码也存在bug,如果大家发现bug,欢迎反馈出来。如果有什么建议和意见,也欢迎提出来。

V5.3 添加 对FN芯片的支持,修复5.2的bug,新增多功能调试助手的库。目前没发现bug。
V5.2 添加了FX 的 FTM3 功能,修复了 5.1的2个bug。V5.2版本目前存在以下bug:
FTM卡死在读取MOD循环里 - 智能车讨论区 - http://vcan123.com/forum.php?mod ... e=1&extra=#pid66060


V5.1 版本已经修复了 V5.0 版本发现的bug。
【山外K60】一天攻破K60 代码 V5.1 - 一天攻破K60 - 山外-vcan123论坛 http://www.vcan123.com/thread-6193-1-1.html
5.1版本目前存在以下bug:
USB 例程
3.2寸 液晶LCD 闪屏问题


==========================================
山外K60库V5版本bug汇总说明:
gpio的多位操作代码有误。
FTM2正交解码有误,B相管脚配置错了。
WDOG看门狗有误,导致没法看门狗复位。
I2C管脚初始化需要加强,否则部分I2C芯片没法正常通信。
FTM代码需要改进,否则低频PWM时高占空比没法输出。
PORT初始化需要清标志位,否则容易导致标志位被置位而触发DMA和中断的异常问题。
鹰眼驱动,提高稳定性。

===========================================================================================

GPIO 多位操作的bug
在chip/inc/MK60_gpio.h 里,多位操作修改为:
  1. //n位操作
  2. #define GPIO_SET_NBIT(NBIT,PTxn,data)   GPIO_PDOR_REG(GPIOX_BASE(PTxn)) =   (                                                   \
  3.                                                                                 (                                               \
  4.                                                                                     GPIO_PDOR_REG(GPIOX_BASE(PTxn))             \
  5.                                                                                     &                                           \
  6.                                                                                     ((uint32)( ~(((1<<NBIT)-1)<<PTn(PTxn))))    \
  7.                                                                                 )                                               \
  8.                                                                                 |   ( ((data)&( (1<<(NBIT))-1))<<PTn(PTxn) )    \
  9.                                                                             )


  10. #define GPIO_DDR_NBIT(NBIT,PTxn,ddr)   GPIO_PDDR_REG(GPIOX_BASE(PTxn))  =   (                                                   \
  11.                                                                                 (                                               \
  12.                                                                                     GPIO_PDDR_REG(GPIOX_BASE(PTxn))             \
  13.                                                                                     &                                           \
  14.                                                                                     ((uint32)( ~(((1<<(NBIT))-1)<<PTn(PTxn))))  \
  15.                                                                                 )                                               \
  16.                                                                                 |   ( ( (ddr) &  ( (1<<(NBIT))-1))<<PTn(PTxn) ) \
  17.                                                                             )

  18. #define GPIO_T_NBIT(NBIT,PTxn,data)   GPIO_PTOR_REG(GPIOX_BASE(PTxn))  =   (                                                    \
  19.                                                                                 (                                               \
  20.                                                                                     GPIO_PTOR_REG(GPIOX_BASE(PTxn))             \
  21.                                                                                     &                                           \
  22.                                                                                     ((uint32)( ~(((1<<NBIT)-1)<<PTn(PTxn))))    \
  23.                                                                                 )                                               \
  24.                                                                                 |   ( ((data)&( (1<<(NBIT))-1))<<PTn(PTxn) )    \
  25.                                                                             )


  26. #define GPIO_GET_NBIT(NBIT,PTxn)    (( GPIO_PDIR_REG(GPIOX_BASE(PTxn))>>PTn(PTxn) ) & ((1<<NBIT)-1))
FTM2 正交解码的 Bug

此bug 由 网友: LSQ_GSQ 发现,并修正。
原先的代码:
  1. 正交编码那里FTM2的B相
  2. if(FTM2_QDPHB == PTA11)                  //管脚复用
  3. {
  4.     port_init(FTM2_QDPHA, ALT6);
  5. }
  6. else if(FTM2_QDPHB == PTB19)
  7. {
  8.     port_init(FTM2_QDPHA, ALT6);
  9. }
修正后的代码:

  1. if(FTM2_QDPHB == PTA11)                  //管脚复用
  2. {
  3.     port_init(FTM2_QDPHB, ALT6);    //FTM2_QDPHA 改成为 FTM2_QDPHB
  4. }
  5. else if(FTM2_QDPHB == PTB19)
  6. {
  7.     port_init(FTM2_QDPHB, ALT6);    //FTM2_QDPHA 改成为 FTM2_QDPHB
  8. }
============================================================================================
                                           WDOG bug
wdog_init_ms函数里
  1.     WDOG_STCTRLH |= ( 0
  2.                       | WDOG_STCTRLH_WDOGEN_MASK     //WDOGEN置位,使能 看门狗
  3.                       //| WDOG_STCTRLH_CLKSRC_MASK   //看门狗时钟选择(0为 LDO ,1为bus 时钟)
  4.                     );
修改为:
  1.     WDOG_STCTRLH = ( 0
  2.                     | WDOG_STCTRLH_WDOGEN_MASK     //WDOGEN置位,使能 看门狗
  3.                     //| WDOG_STCTRLH_CLKSRC_MASK   //看门狗时钟选择(0为 LDO ,1为bus 时钟)
  4.                     | WDOG_STCTRLH_ALLOWUPDATE_MASK
  5.                     | WDOG_STCTRLH_STOPEN_MASK
  6.                     | WDOG_STCTRLH_WAITEN_MASK
  7.                     | WDOG_STCTRLH_STNDBYEN_MASK
  8.                     //|
  9.                     );
=======================================================================================================
I2C bug


需要在 i2c_init 函数里的管脚配置里加多个 ODO

  1.     if(i2cn == I2C0)
  2.     {
  3.         /* 开启时钟 */
  4. #if defined(MK60DZ10)
  5.         SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;           //开启 I2C0时钟
  6. #elif defined( MK60F15)
  7.         SIM_SCGC4 |= SIM_SCGC4_IIC0_MASK;           //开启 I2C0时钟
  8. #endif

  9.         /* 配置 I2C0功能的 GPIO 接口 */
  10.         if(I2C0_SCL == PTB0)
  11.             port_init (PTB0, ALT2 | ODO | PULLUP );
  12.         else if(I2C0_SCL == PTB2)
  13.             port_init (PTB2, ALT2 | ODO | PULLUP );
  14.         else if(I2C0_SCL == PTD8)
  15.             port_init (PTD8, ALT2 | ODO | PULLUP );
  16.         else
  17.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?

  18.         if(I2C0_SDA == PTB1)
  19.             port_init (PTB1, ALT2 | ODO | PULLUP );
  20.         else if(I2C0_SDA == PTB3)
  21.             port_init (PTB3, ALT2 | ODO | PULLUP );
  22.         else if(I2C0_SDA == PTD9)
  23.             port_init (PTD9, ALT2 | ODO | PULLUP );
  24.         else
  25.             ASSERT(0);                              //上诉条件都不满足,直接断言失败了,设置管脚有误?
  26.     }
  27.     else
  28.     {
  29.         /* 开启时钟 */
  30. #if defined(MK60DZ10)
  31.         SIM_SCGC4 |= SIM_SCGC4_I2C1_MASK;           //开启 I2C1时钟
  32. #elif defined(MK60F15)
  33.         SIM_SCGC4 |= SIM_SCGC4_IIC1_MASK;           //开启 I2C1时钟
  34. #endif
  35.         /* 配置 I2C1功能的 GPIO 接口 */
  36.         if(I2C1_SCL == PTE1)
  37.             port_init (PTE1, ALT6 | ODO | PULLUP );
  38.         else if(I2C1_SCL == PTC10)
  39.             port_init (PTC10, ALT2 | ODO | PULLUP );
  40.         else
  41.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?

  42.         if(I2C1_SDA == PTE0)
  43.             port_init (PTE0, ALT6 | ODO | PULLUP );
  44.         else if (I2C1_SDA == PTC11)
  45.             port_init (PTC11, ALT2 | ODO | PULLUP );
  46.         else
  47.             ASSERT(0);                          //上诉条件都不满足,直接断言失败了,设置管脚有误?
  48.     }
==============================================================
FTM 输出 低频PWM时高占空比没输出的解决方法

K60的FTM 不能80% 的解决方法 - 智能车讨论区 - 山外-vcan123论坛 http://www.vcan123.com/forum.p ... 2692&extra=page%3D1

==============================================================
PORT 模块bug

port_init 和 port_init_NoALT 函数都需要添加 清中断标志位的语句:
  1. PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn));
即修改后代码为:


  1. /*!
  2. *  @brief      PORT初始化
  3. *  @param      PTxn    端口
  4. *  @param      cfg     端口属性配置,如触发选项和上拉下拉选项
  5. *  @since      v5.0
  6. *  @note       与port_init_NoALT不同的是,此函数需要配置 MUX 复用功能,
  7.                 否则 MUX = ALT0
  8. *  Sample usage:       port_init (PTA8, IRQ_RISING | PF | ALT1 | PULLUP );    //初始化 PTA8 管脚,上升沿触发中断,带无源滤波器,复用功能为GPIO ,上拉电阻
  9. */
  10. void  port_init(PTXn_e ptxn, uint32 cfg )
  11. {
  12.     SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << PTX(ptxn));                           //开启PORTx端口

  13.     PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn));                           // 清空标志位

  14.     PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) = cfg;                            // 复用功能 , 确定触发模式 ,开启上拉或下拉电阻
  15. }

  16. /*!
  17. *  @brief      PORT初始化
  18. *  @param      PTxn    端口
  19. *  @param      cfg     端口属性配置,如触发选项和上拉下拉选项
  20. *  @since      v5.0
  21. *  @note       与port_init不同的是,此函数不需要配置 MUX 复用功能(即使配置了也不生效),
  22.                 MUX 保留 为原先寄存器配置的值
  23. *  Sample usage:       port_init_NoALT (PTA8, IRQ_RISING | PF | PULLUP );    //初始化 PTA8 管脚,上升沿触发中断,带无源滤波器,保留原先复用功能,上拉电阻
  24. */
  25. void  port_init_NoALT(PTXn_e ptxn, uint32 cfg)
  26. {
  27.     SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK << PTX(ptxn));                           //开启PORTx端口

  28.     PORT_ISFR_REG(PORTX_BASE(ptxn)) = (1<<PTn(ptxn));                           // 清空标志位

  29.     //清空cfg里的MUX,加载寄存器里的MUX
  30.     cfg &= ~PORT_PCR_MUX_MASK;                      //清了MUX 字段(即不需要配置ALT,保持原来的ALT)
  31.     cfg |=  (PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) & PORT_PCR_MUX_MASK);    //读取寄存器里配置的 MUX

  32.     PORT_PCR_REG(PORTX_BASE(ptxn), PTn(ptxn)) = cfg;            // 复用功能 , 确定触发模式 ,开启上拉或下拉电阻
  33. }
====================================================================
IAR输出浮点失败

IAR 输出浮点失败的解决方法 - 智能车资料区 - 山外-vcan123论坛 http://www.vcan123.com/forum.php?mod=viewthread&tid=2878&extra=

=================================================================
鹰眼 提高稳定性


\Board\src\FIRE_OV7725_Eagle.c ,场中断里加个清空PCLK标志位。
  1. /*!
  2. *  @brief      鹰眼ov7725场中断服务函数
  3. *  @since      v5.0
  4. */
  5. void ov7725_eagle_vsync(void)
  6. {

  7.     //场中断需要判断是场结束还是场开始
  8.     if(ov7725_eagle_img_flag == IMG_START)                   //需要开始采集图像
  9.     {
  10.         ov7725_eagle_img_flag = IMG_GATHER;                  //标记图像采集中
  11.         disable_irq(PORTA_IRQn);

  12.         DMA_EN(CAMERA_DMA_CH);                  //使能通道CHn 硬件请求
  13.         DMA_DADDR(CAMERA_DMA_CH) = (uint32)ov7725_eagle_img_buff;    //恢复地址
  14.     }
  15.     else                                        //图像采集错误
  16.     {
  17.         disable_irq(PORTA_IRQn);                        //关闭PTA的中断
  18.         ov7725_eagle_img_flag = IMG_FAIL;                    //标记图像采集失败
  19.     }
  20. }
修改为:
  1. /*!
  2. *  @brief      鹰眼ov7725场中断服务函数
  3. *  @since      v5.0
  4. */
  5. void ov7725_eagle_vsync(void)
  6. {

  7.     //场中断需要判断是场结束还是场开始
  8.     if(ov7725_eagle_img_flag == IMG_START)                   //需要开始采集图像
  9.     {
  10.         ov7725_eagle_img_flag = IMG_GATHER;                  //标记图像采集中
  11.         disable_irq(PORTA_IRQn);

  12.         PORTA_ISFR = 1 <<  PT27;            //清空PCLK标志位
  13.         DMA_EN(CAMERA_DMA_CH);                  //使能通道CHn 硬件请求
  14.         DMA_DADDR(CAMERA_DMA_CH) = (uint32)ov7725_eagle_img_buff;    //恢复地址
  15.     }
  16.     else                                        //图像采集错误
  17.     {
  18.         disable_irq(PORTA_IRQn);                        //关闭PTA的中断
  19.         ov7725_eagle_img_flag = IMG_FAIL;                    //标记图像采集失败
  20.     }
  21. }





本帖被以下淘专辑推荐:

回复

使用道具 举报

发表于 2014-12-8 20:58:23 | 显示全部楼层
q515702604 发表于 1418042725
山外哥,为什么我用5.1版本的CAN总线时候,回环模式好用,但是节点模式不可用呢?节点A用正常模式,就会死在can_tx(CAN1,CAN_TX_MB,can_tx_id,DATA_LEN, txbuff);中的限时等待函数中,改成回环模式就不会死在里面,但是节点B还是不会接收到数据。求山外哥给指导一下,小弟在此拜谢了
卡死在哪里?
不可以直接单片机接单片机的哦,需要can物理层模块才行的
来自PC客户端 来自PC客户端
回复 支持 1 反对 0

使用道具 举报

发表于 2014-9-14 09:28:51 | 显示全部楼层
这些汇总有更新到最新的库里面么
回复 支持 0 反对 1

使用道具 举报

发表于 2013-12-13 12:36:21 | 显示全部楼层
昨天我发现了改了之后就可以了,但是,我今天来就不行了呢,不知道怎么回事,都没改,FTM2测出来只有一个方向的,可能底层还有问题哟,还是请山外哥看看呢,谢谢啦
回复 支持 反对

使用道具 举报

发表于 2013-12-13 12:53:31 | 显示全部楼层
可以了,是我电路板焊接不好的原因
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-13 13:00:58 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-13 12:36
昨天我发现了改了之后就可以了,但是,我今天来就不行了呢,不知道怎么回事,都没改,FTM2测出来只有一个方 ...

只有 一个方向,说明 B 通道还没配置好。

用我们 编码器 的那个例程,修改一下 FTM2 的 B通道
直接把 B通道 分别 接地 和 高电平,测测 方向是否 一个方向。

B通道接 高电平,则 正转。
B通道接 低电平,则 反转
回复 支持 反对

使用道具 举报

发表于 2013-12-13 13:07:26 | 显示全部楼层
Admin 发表于 2013-12-13 13:00
只有 一个方向,说明 B 通道还没配置好。

用我们 编码器 的那个例程,修改一下 FTM2 的 B通道

可以了,我用的外部上拉,是我的上拉电阻被短路了,所以有一相测不出来,嘿嘿,谢谢指点,我准备搞SD卡,有问题还来请教大哥哈,还望大哥多多指导。
回复 支持 反对

使用道具 举报

发表于 2013-12-23 18:58:19 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-13 12:36
昨天我发现了改了之后就可以了,但是,我今天来就不行了呢,不知道怎么回事,都没改,FTM2测出来只有一个方 ...

我咋没发现有正交解码的程序呢
回复 支持 反对

使用道具 举报

发表于 2013-12-23 19:58:45 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-13 13:07
可以了,我用的外部上拉,是我的上拉电阻被短路了,所以有一相测不出来,嘿嘿,谢谢指点,我准备搞SD卡, ...

你是不是准备用SD卡储存图像信息啊
回复 支持 反对

使用道具 举报

发表于 2013-12-23 19:59:53 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-13 13:07
可以了,我用的外部上拉,是我的上拉电阻被短路了,所以有一相测不出来,嘿嘿,谢谢指点,我准备搞SD卡, ...

你是不是准备用SD卡储存图片信息啊
回复 支持 反对

使用道具 举报

发表于 2013-12-23 20:00:20 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-13 13:07
可以了,我用的外部上拉,是我的上拉电阻被短路了,所以有一相测不出来,嘿嘿,谢谢指点,我准备搞SD卡, ...

你是不是准备用SD卡储存图片信息啊
回复 支持 反对

使用道具 举报

发表于 2013-12-23 20:08:37 | 显示全部楼层
532902675 发表于 2013-12-23 18:58
我咋没发现有正交解码的程序呢

有的,在第四章,FTM正交解码
回复 支持 反对

使用道具 举报

发表于 2013-12-23 20:09:36 | 显示全部楼层
电子555 发表于 2013-12-23 19:58
你是不是准备用SD卡储存图像信息啊

嗯,肯定存啊,要不然调车等于盲调,比不过人家的
回复 支持 反对

使用道具 举报

发表于 2013-12-23 21:56:06 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-23 20:09
嗯,肯定存啊,要不然调车等于盲调,比不过人家的

有道理 谢谢啦
回复 支持 反对

使用道具 举报

发表于 2013-12-23 22:13:35 | 显示全部楼层
LSQ_GSQ 发表于 2013-12-23 20:09
嗯,肯定存啊,要不然调车等于盲调,比不过人家的

有道理 谢谢啦
回复 支持 反对

使用道具 举报

发表于 2014-1-7 23:45:41 | 显示全部楼层
前几天没注意到。
回复 支持 反对

使用道具 举报

发表于 2014-1-10 00:54:52 | 显示全部楼层
今天调到编码器了,不小心把编码器反接了一下然后FTM2测出的数据全是反向的还以为是编码器烧坏了。然后马上用FTM1测试发现编码器没坏。然后感觉芯片坏了,立马换新板子测试。发现是程序的问题,准备向山外哥汇报。结果山外哥已经发现了。
回复 支持 反对

使用道具 举报

发表于 2014-1-10 00:57:05 | 显示全部楼层
JIE 发表于 2014-1-10 00:54
今天调到编码器了,不小心把编码器反接了一下然后FTM2测出的数据全是反向的还以为是编码器烧坏了。然后马 ...

我们粗心,测试的时候 没发现 这个 bug。多关注 论坛,我们会 把 用户反馈 的问题 收集起来,以便 后续 的 更新。
回复 支持 反对

使用道具 举报

发表于 2014-1-17 14:45:33 | 显示全部楼层
山外メ雲ジ 发表于 2014-1-10 00:57
我们粗心,测试的时候 没发现 这个 bug。多关注 论坛,我们会 把 用户反馈 的问题 收集起来,以便 后续 ...

山哥  有没有老版本程序的正交编码啊 我习惯了用老版本的程序 我尝试着把新版本的正交编码修改到老版本的上面但是 端口的地方错误修改不好 求解
回复 支持 反对

使用道具 举报

发表于 2014-1-20 15:15:51 | 显示全部楼层
发现RTC那里设置时间,为1月的时候,时间不对了
回复 支持 反对

使用道具 举报

发表于 2014-1-23 10:42:11 | 显示全部楼层
pycbg 发表于 2014-1-20 15:15
发现RTC那里设置时间,为1月的时候,时间不对了

bug已经修改好了
头文件里 uint8 mon;修改为 uint32 mon;
uint32 time2sec(time_s time)函数里面
  1. if (0 >= (int8)(time.mon -= 2)) /* 1..12 -> 11,12,1..10 */
  2.     {
  3.         time.mon += 12; /* Puts Feb last since it has leap day */
  4.         time.year -= 1;
  5.     }
修改为:
  1. if (0 >= (int)(time.mon -= 2)) /* 1..12 -> 11,12,1..10 */
  2.     {
  3.         time.mon += 12; /* Puts Feb last since it has leap day */
  4.         time.year -= 1;
  5.     }
回复 支持 反对

使用道具 举报

发表于 2014-2-21 16:18:42 | 显示全部楼层
那个。。fx15支持ftm3通道。。。而代码中没有涉及到。。或许考虑了程序的兼容性??
回复 支持 反对

使用道具 举报

发表于 2014-2-21 16:30:49 | 显示全部楼层
zyc 发表于 2014-2-21 16:18
那个。。fx15支持ftm3通道。。。而代码中没有涉及到。。或许考虑了程序的兼容性??

FX代码由于代码改得比较匆忙,所以新增的有些功能还没来得及加进去。
回复 支持 反对

使用道具 举报

发表于 2014-2-21 16:33:09 | 显示全部楼层
zyc 发表于 2014-2-21 16:18
那个。。fx15支持ftm3通道。。。而代码中没有涉及到。。或许考虑了程序的兼容性??

后续的版本更新,才新增这些功能。实际上,你们自己也可以增加这些功能的。
回复 支持 反对

使用道具 举报

发表于 2014-2-21 17:31:07 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-21 16:33
后续的版本更新,才新增这些功能。实际上,你们自己也可以增加这些功能的。

是的。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-2-26 15:36:34 | 显示全部楼层
山外哥我想用F15的FTM3模块的功能,可是我看你的底层里没有写这个模块,希望你补充上  非常感谢
回复 支持 反对

使用道具 举报

发表于 2014-2-26 15:37:47 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-21 16:33
后续的版本更新,才新增这些功能。实际上,你们自己也可以增加这些功能的。

能力有限- -增加后貌似还要改头文件中的一些东西,怕改了用不了- -
回复 支持 反对

使用道具 举报

发表于 2014-2-26 17:56:45 | 显示全部楼层
/*
* 宏定义实现返回绝对值(x里不能有自加自减的语句,否则变量出错)
*/
//#define ABS(x) (((x) > 0) ? (x) : (-x))
这句话我在别的函数里使用有问题,不知是不是BUG
回复 支持 反对

使用道具 举报

发表于 2014-2-26 18:23:48 | 显示全部楼层
LSQ_GSQ 发表于 2014-2-26 17:56
/*
* 宏定义实现返回绝对值(x里不能有自加自减的语句,否则变量出错)
*/

改成这样试试
  1. #define ABS(x) (((x) > 0) ? (x) : (-(x)))
回复 支持 反对

使用道具 举报

发表于 2014-2-26 19:37:50 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-26 18:23
改成这样试试

我自己写的一个简单的绝对值函数,等会试试看你这样改行不行嘛
回复 支持 反对

使用道具 举报

发表于 2014-2-26 20:33:06 | 显示全部楼层
LSQ_GSQ 发表于 2014-2-26 19:37
我自己写的一个简单的绝对值函数,等会试试看你这样改行不行嘛

其实系统已经自带了绝对值的求法函数,我之所以加入这宏定义的目的是避免函数调用而带来的效率问题而已
回复 支持 反对

使用道具 举报

发表于 2014-2-27 09:24:09 | 显示全部楼层
本帖最后由 永远之后 于 2014-2-27 09:27 编辑

  1. #if defined(MK60F15)
  2.         // 设置 高32位数据
  3.         data = *(uint32 *)(buf+4);

  4.         FDATA0 = ((Dtype *)&data)->B[3];                    // 设置写入数据
  5.         FDATA1 = ((Dtype *)&data)->B[2];
  6.         FDATA2 = ((Dtype *)&data)->B[1];
  7.         FDATA3 = ((Dtype *)&data)->B[0];  
  8. #endif
Flash代码里
__RAMFUNC uint8 flash_write_buf(uint16 sector_num, uint16 offset, uint16 cnt, uint8 *buf)F15高位字节错了
  1. #if defined(MK60F15)
  2.         // 设置 高32位数据
  3.         data = *(uint32 *)(buf+4);

  4.         FDATA4 = ((Dtype *)&data)->B[3];                    // 设置写入数据
  5.         FDATA5 = ((Dtype *)&data)->B[2];
  6.         FDATA6 = ((Dtype *)&data)->B[1];
  7.         FDATA7 = ((Dtype *)&data)->B[0];
  8. #endif
回复 支持 反对

使用道具 举报

发表于 2014-2-27 09:29:03 | 显示全部楼层
另外,想问一下,K60引脚不做任何配置的时候是什么状态?开漏?
回复 支持 反对

使用道具 举报

发表于 2014-3-17 20:57:28 | 显示全部楼层
为什么BUG改了之后还是不行哦,接的B18和B19
回复 支持 反对

使用道具 举报

发表于 2014-3-17 20:58:52 | 显示全部楼层
为什么FTM2的BUG改了之后还是不行哦,接的B18和B19
回复 支持 反对

使用道具 举报

发表于 2014-3-17 22:30:38 | 显示全部楼层
追梦人 发表于 2014-3-17 20:58
为什么FTM2的BUG改了之后还是不行哦,接的B18和B19

有没有接上拉电阻?
看过管脚复用那里有没有接错:管脚复用在工程根目录下\Board\inc\FIRE_PORT_cfg.h
回复 支持 反对

使用道具 举报

发表于 2014-3-17 23:39:43 | 显示全部楼层
栾端静 发表于 2014-3-17 22:30
有没有接上拉电阻?
看过管脚复用那里有没有接错:管脚复用在工程根目录下\Board\inc\FIRE_PORT_cfg.h

都是对的了,接了上拉电阻,管脚复用也没有问题的,但就是不行,返回值是0
回复 支持 反对

使用道具 举报

发表于 2014-3-19 21:29:30 | 显示全部楼层
新增 I2C 的bug
回复 支持 反对

使用道具 举报

发表于 2014-3-21 16:18:38 | 显示全部楼层
终于搞定FTM2了,纠结了几天一直认为是程序的问题,后来才发现是核心板引脚虚焊的问题,啊啊,这把心情啊。。。
回复 支持 反对

使用道具 举报

发表于 2014-3-23 16:29:55 | 显示全部楼层
用的山外库,开启电机初始化舵机就不能工作,这是怎么回事啊
回复 支持 反对

使用道具 举报

发表于 2014-7-2 18:58:56 | 显示全部楼层
Admin 发表于 2013-12-13 13:00
只有 一个方向,说明 B 通道还没配置好。

用我们 编码器 的那个例程,修改一下 FTM2 的 B通道

怎么我修复了BUG,后,过了一天,又变回原来的毛病了,单向,,
求教!!!
回复 支持 反对

使用道具 举报

发表于 2014-7-2 19:04:36 | 显示全部楼层
栾端静 发表于 2014-3-17 22:30
有没有接上拉电阻?
看过管脚复用那里有没有接错:管脚复用在工程根目录下\Board\inc\FIRE_PORT_cfg.h

FTM正交解码,,应该是配置哪个端口??
回复 支持 反对

使用道具 举报

发表于 2014-9-14 09:29:11 | 显示全部楼层
发现好像有一些帖子进不去.....
回复 支持 反对

使用道具 举报

发表于 2014-9-14 09:30:36 | 显示全部楼层
请问下管理员 抱歉,您没有权限访问该版块  要多少积分才可以进去啊~?  想下载K60的库..
回复 支持 反对

使用道具 举报

发表于 2014-9-14 14:00:05 | 显示全部楼层
Rococo 发表于 2014-9-14 09:30
请问下管理员 抱歉,您没有权限访问该版块  要多少积分才可以进去啊~?  想下载K60的库..

我们最近在调整资料,所以有的帖子可能进不去。
回复 支持 反对

使用道具 举报

发表于 2014-11-10 12:25:10 | 显示全部楼层
山外哥,我按照你的视频学习k60,用的v5.1例程,编译时出现:
MK60_conf.c  
Error[Pe020]: identifier "FILE" is undefined F:\山外\TEST\fire_kinetis_k60_Demo\App\MK60_conf.c 56
Error while running C/C++ Compiler
回复 支持 反对

使用道具 举报

发表于 2014-11-26 10:35:04 | 显示全部楼层
DNZ和DN系列不一样,给个具体的芯片支持列表呗
回复 支持 反对

使用道具 举报

发表于 2014-12-7 12:20:02 | 显示全部楼层
棒棒哒
回复 支持 反对

使用道具 举报

发表于 2014-12-7 21:43:14 | 显示全部楼层
默默的复制下来
回复 支持 反对

使用道具 举报

发表于 2014-12-8 20:45:25 | 显示全部楼层
山外メ雲ジ 发表于 2014-2-21 16:30
FX代码由于代码改得比较匆忙,所以新增的有些功能还没来得及加进去。

山外哥,为什么我用5.1版本的CAN总线时候,回环模式好用,但是节点模式不可用呢?节点A用正常模式,就会死在can_tx(CAN1,CAN_TX_MB,can_tx_id,DATA_LEN, txbuff);中的限时等待函数中,改成回环模式就不会死在里面,但是节点B还是不会接收到数据。求山外哥给指导一下,小弟在此拜谢了
回复 支持 反对

使用道具 举报

发表于 2014-12-8 20:58:23 | 显示全部楼层
q515702604 发表于 1418042725
山外哥,为什么我用5.1版本的CAN总线时候,回环模式好用,但是节点模式不可用呢?节点A用正常模式,就会死在can_tx(CAN1,CAN_TX_MB,can_tx_id,DATA_LEN, txbuff);中的限时等待函数中,改成回环模式就不会死在里面,但是节点B还是不会接收到数据。求山外哥给指导一下,小弟在此拜谢了
卡死在哪里?
不可以直接单片机接单片机的哦,需要can物理层模块才行的
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

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

本版积分规则

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