注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
shangdawei的个人空间 https://home.eeworld.com.cn/space-uid-180876.html [收藏] [复制] [分享] [RSS]
日志

STM32 USB CAN 学习笔记 - 共享RAM的用法

已有 3047 次阅读2010-12-30 10:21 |

USB 时钟可以一直使能。

如果CAN时钟没有使能,RAM 能被软件读写。(CANBus 不能发送和接受Message)

如果CAN时钟使能,RAM不能软件被写。 CANBus Core 控制此RAM区域。(CANBus 可以发送和接受Message)

CANBus 占用了 256 字节(地址范围 512 字节)。

开始区域是Filters[14] = (F0R0、F0R1), (F1R0、F1R1),  ... (F13R0、F13R1).

紧接着是 Rx0 FiFo[0], Tx0, Tx1, Tx2,  Rx0 FiFo[1], Rx0 FiFo[2], Rx1 FiFo[0], Rx1 FiFo[1], Rx1 FiFo[2]。

USB 可以使用后面的 256 字节。

具体分配可以是 : 8 个端点占用 8 * 8 = 64 Bytes (ADDR、CNT : TX、RX)

最好只使用 3 个端点 : (1) 控制端点 0 (2) In 端点 1 (3)Out 端点 2

控制端点 : 64 bytes

In 端点: 64 Bytes

Out 端点: 64 Bytes

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

00006000 00 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00   //F0R0 F0R1
00006010 08 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00   //F1R0 F1R1
00006020 10 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006030 18 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006040 20 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006050 28 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006060 30 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006070 38 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006080 40 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006090 48 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060A0 50 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060B0 58 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060C0 60 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060D0 68 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00  //F13R0 F13R1

000060E0 04 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00  //Rx0 FIFO[0]
000060F0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006100 05 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx0
00006110 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006120 0D 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx1
00006130 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006140 15 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx2
00006150 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006160 0C 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00  //Rx0 FIFO[1]
00006170 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006180 14 00 00 00 00 00 00 00 08 02 00 00 00 00 00 00  //Rx0 FIFO[2]
00006190 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061A0 1C 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00  //Rx1 FIFO[0]
000061B0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061C0 24 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00  //Rx1 FIFO[1]
000061D0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061E0 2C 00 00 00 00 00 00 00 08 02 00 00 00 00 00 00  //Rx1 FIFO[2]
000061F0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

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

00006000 00 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00    // Filters[0]
00006010 08 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006020 10 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006030 18 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006040 20 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006050 28 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006060 30 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006070 38 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006080 40 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006090 48 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060A0 50 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060B0 58 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060C0 60 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060D0 68 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00    // Filters[13]

000060E0 04 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00    //Rx0 FIFO[0]
000060F0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006100 05 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00    //Tx0
00006110 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006120 0D 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00    //Tx1
00006130 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006140 15 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00    //Tx2
00006150 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006160 0C 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00    //Rx0 FIFO[1]
00006170 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006180 14 00 00 00 00 00 00 00 08 02 00 00 00 00 00 00    //Rx0 FIFO[2]
00006190 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061A0 1C 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00    //Rx1 FIFO[0]
000061B0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    //Rx1 FIFO[1]
000061D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

000061E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    //Rx1 FIFO[2]
000061F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00006200 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00    //Unused Endpoint
00006210 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006220 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006230 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006240 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00

00006250 40 01 00 00 00 00 00 00 40 01 00 00 00 84 00 00    //EP0
00006260 80 01 00 00 00 00 00 00 C0 01 00 00 40 00 00 00    //EP1
00006270 C0 01 00 00 00 84 00 00 C0 01 00 00 00 84 00 00    //EP2

00006280 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00    //EP0 Buffer
00006290 26 26 00 00 FF FF 00 00 00 01 00 00 00 01 00 00
000062A0 02 01 00 00 65 00 00 00 72 00 00 00 40 00 00 00
000062B0 00 07 00 00 05 02 00 00 02 40 00 00 00 00 00 00
000062C0 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
000062D0 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
000062E0 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
000062F0 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00

00006300 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00    //EP1 Buffer
00006310 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006320 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006330 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006340 22 22 00 00 22 22 00 00 22 22 00 00 22 22 00 00
00006350 C0 01 00 00 00 00 00 00 C0 01 00 00 00 84 00 00
00006360 C0 01 00 00 00 00 00 00 FD 67 00 00 0A 6C 00 00
00006370 34 78 00 00 68 FD 00 00 C0 01 00 00 00 84 00 00

00006380 00 09 00 00 01 00 00 00 00 00 00 00 00 00 00 00    //EP2 Buffer
00006390 27 27 00 00 04 00 00 00 00 02 00 00 00 00 00 00
000063A0 00 00 00 00 07 05 00 00 81 02 00 00 40 00 00 00
000063B0 00 07 00 00 05 02 00 00 02 40 00 00 00 00 00 00
000063C0 89 8E 00 00 82 83 00 00 C2 47 00 00 B4 69 00 00
000063D0 EA 7C 00 00 16 29 00 00 93 C3 00 00 79 25 00 00
000063E0 4A E1 00 00 F9 AC 00 00 39 CB 00 00 47 3A 00 00
000063F0 F1 32 00 00 C0 22 00 00 7B 03 00 00 4F A2 00 00

USB    CAN          RAM

Dis    Dis     软件 (不可写入, 读取无意义) 硬件 (没有控制)

Dis    En      软件 (不可写入, 读取无意义) 硬件 (CANBus控制)

En     Dis     软件 (可写入, 可读取)      硬件 (USB控制)

En     En      软件 (不可写入, 读取无意义) 硬件 (CANBus控制)

 


00006000 00 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00   //F0R0 F0R1
00006010 08 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00   //F1R0 F1R1
00006020 10 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006030 18 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006040 20 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006050 28 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006060 30 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006070 38 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006080 40 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
00006090 48 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060A0 50 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060B0 58 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060C0 60 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00
000060D0 68 00 00 00 00 00 00 00 F8 FF 00 00 FF FF 00 00  //F13R0 F13R1

000060E0 04 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00  //Rx0 FIFO[0]
000060F0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006100 05 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx0
00006110 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006120 0D 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx1
00006130 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006140 15 00 00 00 00 00 00 00 18 11 00 00 11 11 00 00  //Tx2
00006150 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006160 0C 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00  //Rx0 FIFO[1]
00006170 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00006180 14 00 00 00 00 00 00 00 08 02 00 00 00 00 00 00  //Rx0 FIFO[2]
00006190 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061A0 1C 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00  //Rx1 FIFO[0]
000061B0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061C0 24 00 00 00 00 00 00 00 08 01 00 00 00 00 00 00  //Rx1 FIFO[1]
000061D0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

000061E0 2C 00 00 00 00 00 00 00 08 02 00 00 00 00 00 00  //Rx1 FIFO[2]
000061F0 01 23 00 00 45 67 00 00 89 AB 00 00 CD EF 00 00

00000000 58 00 00 00 20 00 00 00 18 00 00 00 00 84 00 00 
         EP0TxAddr   EP0TxCnt    EP0RxAddr   EP0RxCnt 0x00008400 --> BL_SIZE = 64 Bytes, BlockCount = 1
00000010 98 00 00 00 09 8F 00 00 08 AE 00 00 22 C9 00 00 
         EP1TxAddr   EP1TxCnt    
00000020 38 46 00 00 BD 0E 00 00 D8 00 00 00 00 84 00 00 
                                 EP2RxAddr   EP2RxCnt 0x00008400 --> BL_SIZE = 64 Bytes, BlockCount = 1
00000030 00 00 00 00 00 02 00 00 00 00 00 00 FF 07 00 00 
00000040 A8 A8 00 00 83 63 00 00 FC 1C 00 00 47 41 00 00 
00000050 EB DC 00 00 E3 34 00 00 9A C9 00 00 D3 35 00 00 
00000060 5C 7E 00 00 55 07 00 00 5D 50 00 00 1B 48 00 00 
00000070 49 70 00 00 1B 2C 00 00 F4 86 00 00 FA A6 00 00 
00000080 30 5E 00 00 E1 0F 00 00 FB C7 00 00 FF 15 00 00 
00000090 5B 16 00 00 18 F7 00 00 97 2B 00 00 A7 78 00 00 
000000A0 D1 77 00 00 25 7D 00 00 5D 88 00 00 9D C3 00 00 

000000B0 09 02 00 00 20 00 00 00 01 01 00 00 00 80 00 00 
000000C0 32 09 00 00 04 00 00 00 00 02 00 00 FF FF 00 00 
000000D0 FF 04 00 00 07 05 00 00 81 02 00 00 40 00 00 00 
000000E0 00 07 00 00 05 02 00 00 02 40 00 00 00 00 00 00 
000000F0 61 00 00 00 67 00 00 00 65 00 00 00 FB E6 00 00 
00000100 9C 6C 00 00 1D 10 00 00 FD E2 00 00 58 03 00 00 
00000110 4B 38 00 00 2E 79 00 00 C8 94 00 00 CC A9 00 00 
00000120 EF 55 00 00 CD 1B 00 00 75 0A 00 00 77 69 00 00 

00000130 8F 42 00 00 44 AD 00 00 D0 2E 00 00 9F 9B 00 00 
00000140 DB 21 00 00 AF 8A 00 00 C7 46 00 00 AC 04 00 00 
00000150 64 0C 00 00 88 E4 00 00 0B 04 00 00 9F 28 00 00 
00000160 7F 09 00 00 F7 2B 00 00 C1 01 00 00 06 27 00 00 
00000170 AA 95 00 00 A8 18 00 00 65 C1 00 00 51 DD 00 00 
00000180 AC 53 00 00 3D 74 00 00 9E 27 00 00 35 7D 00 00 
00000190 DB F5 00 00 4C 8D 00 00 A2 66 00 00 7C E9 00 00 
000001A0 34 D8 00 00 8D 3E 00 00 8E BF 00 00 86 2B 00 00 

000001B0 08 BE 00 00 8F A0 00 00 E0 54 00 00 E7 8A 00 00 
000001C0 CB B6 00 00 CA 7A 00 00 C4 DF 00 00 9C 79 00 00 

000001D0 40 01 00 00 00 00 00 00 00 01 00 00 00 84 00 00 
         EP0TxAddr   EP0TxCnt    EP0RxAddr   EP0RxCnt 0x00008400 --> BL_SIZE = 64 Bytes, BlockCount = 1
000001E0 80 01 00 00 22 C9 00 00 A8 89 00 00 82 B0 00 00 
         EP1TxAddr   EP1TxCnt    
000001F0 B3 46 00 00 07 EC 00 00 C0 01 00 00 00 84 00 00 
                                 EP2RxAddr   EP2RxCnt 0x00008400 --> BL_SIZE = 64 Bytes, BlockCount = 1
00000200 00 09 00 00 01 00 00 00 00 00 00 00 00 00 00 00 
00000210 27 27 00 00 60 28 00 00 ED 08 00 00 36 2C 00 00 
00000220 18 D3 00 00 C1 D6 00 00 41 BC 00 00 9C 5B 00 00 
00000230 1C 87 00 00 77 E0 00 00 01 E1 00 00 43 26 00 00 
00000240 98 88 00 00 92 E7 00 00 7A 88 00 00 FA 95 00 00 
00000250 79 57 00 00 BA 62 00 00 FA 2C 00 00 FC 36 00 00 
00000260 0E E3 00 00 50 9C 00 00 DD 62 00 00 96 29 00 00 
00000270 7E C3 00 00 07 2A 00 00 53 4D 00 00 43 8C 00 00 

00000280 09 02 00 00 20 00 00 00 01 01 00 00 00 80 00 00 
00000290 32 09 00 00 04 00 00 00 00 02 00 00 FF FF 00 00 
000002A0 FF 04 00 00 07 05 00 00 81 02 00 00 40 00 00 00 
000002B0 00 07 00 00 05 02 00 00 02 40 00 00 00 00 00 00 
000002C0 61 00 00 00 67 00 00 00 65 00 00 00 FD 12 00 00 
000002D0 D8 8B 00 00 82 32 00 00 D6 92 00 00 0E 10 00 00 
000002E0 4B F6 00 00 1F 99 00 00 60 49 00 00 4D 53 00 00 
000002F0 9E 6B 00 00 B8 B6 00 00 64 EC 00 00 41 8A 00 00 

00000300 C4 67 00 00 96 0F 00 00 D9 08 00 00 CB 61 00 00 
00000310 29 4D 00 00 C0 59 00 00 A0 E9 00 00 52 3B 00 00 
00000320 DF 45 00 00 3B C8 00 00 49 8E 00 00 93 5C 00 00 
00000330 6D 12 00 00 B5 28 00 00 4B DE 00 00 9F DC 00 00 
00000340 6E D6 00 00 8A 1C 00 00 43 D8 00 00 0A 54 00 00 
00000350 CE 32 00 00 54 CD 00 00 F2 1A 00 00 84 F8 00 00 
00000360 CB 12 00 00 88 29 00 00 FD 27 00 00 0A 6C 00 00 
00000370 20 38 00 00 48 7D 00 00 E0 5E 00 00 09 7A 00 00 

00000380 A3 78 00 00 88 43 00 00 3D FA 00 00 9E 6B 00 00 
00000390 5F 94 00 00 FE 91 00 00 F3 42 00 00 BE A1 00 00 
000003A0 0E 44 00 00 B3 CA 00 00 90 34 00 00 E7 F2 00 00 
000003B0 4C F0 00 00 71 5A 00 00 3C 70 00 00 97 39 00 00 
000003C0 A9 86 00 00 82 83 00 00 C2 07 00 00 94 61 00 00 
000003D0 EC 7C 00 00 16 09 00 00 97 C7 00 00 79 21 00 00 
000003E0 4A E1 00 00 F9 AC 00 00 39 DB 00 00 47 3A 00 00 
000003F0 F1 32 00 00 C8 22 00 00 39 53 00 00 4F A2 00 00 
Device Descriptor:
bLength            :   18
bDescriptorType    : 0x01
bcdUSB             : 0x0200
bDeviceClass       : 0x00
bDeviceSubClass    : 0x00
bDeviceProtocol    : 0x00
bMaxPacketSize0    :   64
idVendor           : 0xFFFF
idProduct          : 0xFFFF
bcdDevice          : 0x0100
iManufacturer      :   01
iProduct           :   02
iSerialNumber      :   03
bNumConfigurations :   01

Configuration Descriptor:
bLength            :   09
bDescriptorType    : 0x02
wTotalLength       :   0032
bNumInterfaces     :   01
bConfigurationValue:   01
iConfiguration     :   00
bmAttributes       : 0x80
MaxPower           :   32

Interface Descriptor:
bLength            :   09
bDescriptorType    : 0x04
bInterfaceNumber   :   00
bAlternateSetting  :   00
bNumEndpoints      :   02
bInterfaceClass    : 0xFF USB_DEVICE_CLASS_VENDOR_SPECIFIC
bInterfaceSubClass : 0xFF
bInterfaceProtocol : 0xFF
iInterface         :   04

Endpoint Descriptor:
bLength            :   07
bDescriptorType    : 0x05
bEndpointAddress   : 0x81 IN
bmAttributes       : 0x02 BULK
wMaxPacketSize     :   0064
bInterval          :   00

Endpoint Descriptor:
bLength            :   07
bDescriptorType    : 0x05
bEndpointAddress   : 0x02 OUT
bmAttributes       : 0x02 BULK
wMaxPacketSize     :   0064
bInterval          :   00

String Descriptor:
bLength            :   26
bDescriptorType    : 0x03
DescriptorContents :   000000000001

String Descriptor:
bLength            :   38
bDescriptorType    : 0x03
DescriptorContents :   STM32 Mass Storage

String Descriptor:
bLength            :   38
bDescriptorType    : 0x03
DescriptorContents :   STMicroelectronics

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章