6748|17

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于STM32CAN接口问题 [复制链接]

看到论坛里面的"STM3210B-EVAL参考线路图",CAN总线和USB都使用了,但是手册上这两个接口IO是共用的,如何实现?如图,将CAN接到了PD0,PD1
C:C.JPG
此帖出自stm32/stm8论坛

最新回复

                                 USB对缓冲区的分配可以灵活设置#define BTABLE_ADDRESS xxxx然后可以定义端点缓冲区地址/* EP0  *//* rx/tx buffer base address */#define ENDP0_RXADDR        (BTABLE_ADDRESS+BTABLE_SIZE)#define ENDP0_TXADDR        (ENDP0_RXADDR+BULK_MAX_PACKET_SIZE)/* EP1  *//* tx buffer base address */#define ENDP1_TXADDR        (ENDP0_TXADDR+BULK_MAX_PACKET_SIZE)/* EP2  *//* Rx buffer base address */#define ENDP2_RXADDR        (ENDP1_TXADDR+BULK_MAX_PACKET_SIZE)但是CAN对共享缓冲区的使用,没有明确的说明,需要通过实验来确定。   详情 回复 发表于 2008-7-13 23:14
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

看来你和我一样,看见数据手册比较激动,没看参考手册

参考手册87页:5.3.2
The BXCAN signal can be mapped on Port A, Port B or Port E as shown in Table 13.

Table 13. BXCAN alternate function remapping
Alternate Function    CAN_REMAP[1:0] =“00”   CAN_REMAP[1:0] ="10"(1)     CAN_REMAP[1:0] ="11"(2)

CANRX       PA11      PB8      PD0
          
CANTX       PA12      PB9      PD1



1. Remap not available on 36-pin package
2. Remap available only on 100-pin package


此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

看来得在看看这几百页的手册,非常感谢!

                                  
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 

STM32 CAN和USB

  还需要注意的是,STM32的 CAN和USB有可能不能同时使用的,因为它们共享了专门的1块RAM区域:0x4000 6000 ~ 0x4000 6400。
  这点可以参考STM32F103 Data sheet Rev 2的第22页
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 

真的??

                                 正准备用它做个CAN-usb的东西呢,
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 

共享了专门的1块RAM区域:0x4000 6000 ~ 0x4000 6400

                                 那就不好用了
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 

CAN用这块区域干什么呢?

接收和发送缓冲区?

看ST的DEMO这块区域好像全给了USB。 
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 

STM32 CAN和USB共享的RAM

                                   STM32 CAN和USB共享了RAM区域:0x4000 6000 ~ 0x4000 6400,当然都是用作缓冲区。但我想这并不意味着CAN和USB绝对不能同时使用,在某些应用中,如果缓冲区不需要太大,那么CAN和USB有可能同时可用。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 

这共享的0x400应该是1Kbit吧

怎么数据手册上写shared 512BYTE 呢?



此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 

关于 STM32 CAN接口问题

请教一下,
1. Remap not available on 36-pin package
手册里没提到过36脚的,有货么,48脚的能不能map阿
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 

36脚的STM32?

  36脚的STM32,或许有? 但既然手册里没提到过36脚的,那么最好认为没这种货-除非你有很大的订货量(每年几百万片?)。
  其实,只要你有大量的订单,即使你想做32脚的芯片,ST(或其它大的供应商)都原意帮你做。问题是,你没有那么大的订单...
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 

48脚的能很容易买到就不错了,呵呵

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 

STM32 芯片


  
  STM32F10XX 48PIN,100PIN已经到了一批,如果需要购买或者是申请样片可以联系我们。www.mxchip.com
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

14
 

不知道64PIN的可以REMAP吗?

上面说到: 2. Remap available only on 100-pin package
64脚的没看到有提起。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

15
 

不知道64PIN的可以REMAP吗?

上面写到:
Table 13. BXCAN alternate function remapping
Alternate Function    CAN_REMAP[1:0] =“00”   CAN_REMAP[1:0] ="10"(1)

1. Remap not available on 36-pin package

那么言下之意,64PIN的支持CAN_REMAP[1:0] ="10"。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

16
 

48PIN也應該能remap

                                 看datasheet上,48PIN應該也能remap,但CAN和USB使用共用的RAM這個絕對是個設計上的失誤,大部分的工業設備及系統,都需要與PC連接進行組態,配置,監控等,之前一直使用RS232,但現在越來越多的電腦不帶RS232,且速度也慢,對於快速數據采集來說,USB更是理想的選擇,所以越來越多的工業設備要使用USB來取代RS232,因此USB接口運用於工業產品上是會越來越普遍的,因此強烈建議ST將STM32的USB和CAN的RAM分開,要省也不用省這麼一點點。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

17
 

怎么数据手册上写shared 512BYTE 呢?

占用了 1K 空间而已。 每一个Word,只有低 HalfWord 有用。

参考USB的

void UserToPMABufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes)
{
  u32 n = (wNBytes + 1) >> 1;   /* n = (wNBytes + 1) / 2 */
  u32 i, temp1, temp2;

  u16 *pdwVal;        HalfWord 指针

  pdwVal = (u16 *)(wPMABufAddr * 2 + PMAAddr);
  for (i = n; i != 0; i--)
  {
    temp1 = (u16) * pbUsrBuf;
    pbUsrBuf++;
    temp2 = temp1 | (u16) * pbUsrBuf << 8;
    *pdwVal++ = temp2;

    pdwVal++;        跳过 HalfWord

    pbUsrBuf++;
  }
}
 
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

18
 

CAN对共享缓冲区的使用,没有明确的说明

USB对缓冲区的分配可以灵活设置

#define BTABLE_ADDRESS xxxx

然后可以定义端点缓冲区地址

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (BTABLE_ADDRESS+BTABLE_SIZE)
#define ENDP0_TXADDR        (ENDP0_RXADDR+BULK_MAX_PACKET_SIZE)

/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (ENDP0_TXADDR+BULK_MAX_PACKET_SIZE)

/* EP2  */
/* Rx buffer base address */
#define ENDP2_RXADDR        (ENDP1_TXADDR+BULK_MAX_PACKET_SIZE)

但是CAN对共享缓冲区的使用,没有明确的说明,需要通过实验来确定。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表