7ecaa916cd65d48fa9241eb3070619f5aa9ed19e
BOM-DAT/FPC-dat/FPC-dat.md
| ... | ... | @@ -19,4 +19,14 @@ FPC upper flip |
| 19 | 19 |  |
| 20 | 20 | |
| 21 | 21 | ## dimension |
| 22 | - |
|
| ... | ... | \ No newline at end of file |
| 0 | + |
|
| 1 | + |
|
| 2 | + |
|
| 3 | +## soldering |
|
| 4 | + |
|
| 5 | +Use low-temperature solder [[soldering-paste-dat]] to tin the pads first, then clean the pads with board cleaning solution, brush on BGA soldering flux, and finally use a hot plate. The result is almost as good as factory production. |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +## ref |
|
| 9 | + |
|
| 10 | +- [[soldering-dat]] |
|
| ... | ... | \ No newline at end of file |
Chip-dat/TI-dat/TI-sensor-dat/ti-sensor-dat.md
| ... | ... | @@ -3,6 +3,8 @@ |
| 3 | 3 | |
| 4 | 4 | [[dc-current-sensor-dat]] |
| 5 | 5 | |
| 6 | +- [[INA330-dat]] |
|
| 7 | + |
|
| 6 | 8 | - [[INA219-dat]] |
| 7 | 9 | - [[INA226-dat]] |
| 8 | 10 | - [[INA240-dat]] |
Circuits-dat/power-on-dat/power-on-dat.md
| ... | ... | @@ -0,0 +1,46 @@ |
| 1 | + |
|
| 2 | +# power-on-dat |
|
| 3 | + |
|
| 4 | +# Power-On Circuit Data |
|
| 5 | + |
|
| 6 | +This tutorial describes a reliable power-on/off circuit using a low-cost microcontroller, suitable for battery-powered applications with ultra-low standby current. |
|
| 7 | + |
|
| 8 | +## Overview |
|
| 9 | + |
|
| 10 | +I built a circuit using a 0.25 RMB microcontroller and have used it for half a year with excellent reliability. The design features: |
|
| 11 | + |
|
| 12 | +- One button input |
|
| 13 | +- One output (to the main controller) |
|
| 14 | + - When the power-off button is detected, the output generates a falling edge, allowing the main controller to save data. |
|
| 15 | +- The power control output drives the CE (chip enable) pin of an LDO regulator. |
|
| 16 | +- Powered by a single lithium battery. |
|
| 17 | +- In the off state, the circuit consumes almost no battery power. Even after being off for one or two months, the battery still retains charge. |
|
| 18 | + |
|
| 19 | +## Example Components |
|
| 20 | + |
|
| 21 | +- **PMS150C SOT23-6** (by Padauk) |
|
| 22 | + - Price: 0.13 RMB |
|
| 23 | + - Used in smart robot projects for power on/off control. |
|
| 24 | + - Standby current: 2μA |
|
| 25 | + |
|
| 26 | +- **Huimang Micro SOT23-6** (likely PIC core) |
|
| 27 | + - Suitable for low-power applications. |
|
| 28 | + - Other models tested: working current 600μA, sleep current as low as 2μA. |
|
| 29 | + - For this simple design, sleep current was not measured, but estimated at 1.5μA. |
|
| 30 | + - Combined with the LDO, total standby current should be below 10μA. |
|
| 31 | + |
|
| 32 | +## Circuit Operation |
|
| 33 | + |
|
| 34 | +```mermaid |
|
| 35 | +flowchart TD |
|
| 36 | + Button[Button Input] --> MCU[Microcontroller] |
|
| 37 | + MCU -->|Falling Edge Output| MainController[Main Controller] |
|
| 38 | + MCU -->|Power Control| LDO[LDO CE Pin] |
|
| 39 | + LDO --> Load[System Load] |
|
| 40 | + Battery[Lithium Battery] --> LDO |
|
| 41 | +``` |
|
| 42 | + |
|
| 43 | + |
|
| 44 | +## ref |
|
| 45 | + |
|
| 46 | +- [[power-on]] - [[circuits]] |
|
| ... | ... | \ No newline at end of file |
SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-37-40.png
| ... | ... | Binary files /dev/null and b/SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-37-40.png differ |
SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-38-13.png
| ... | ... | Binary files /dev/null and b/SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-38-13.png differ |
SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-38-22.png
| ... | ... | Binary files /dev/null and b/SDK-dat/MDK-ARM-dat/AC6-dat/2025-07-09-01-38-22.png differ |
SDK-dat/MDK-ARM-dat/AC6-dat/AC6-dat-english.md
SDK-dat/MDK-ARM-dat/AC6-dat/AC6-dat.md
| ... | ... | @@ -0,0 +1,294 @@ |
| 1 | +# Migrating from ARM Compiler 5 to ARM Compiler 6 - Complete Tutorial |
|
| 2 | + |
|
| 3 | +A comprehensive guide for migrating embedded projects from ARM Compiler 5 to ARM Compiler 6. |
|
| 4 | + |
|
| 5 | +## Prerequisites |
|
| 6 | + |
|
| 7 | +**⚠️ Important:** Before starting the migration, make sure to backup your project code. |
|
| 8 | + |
|
| 9 | +## Migration Requirements |
|
| 10 | + |
|
| 11 | +To use ARM Compiler 6, the minimum recommended MDK version is: |
|
| 12 | + |
|
| 13 | +- **MDK version 5.23 or higher** |
|
| 14 | + |
|
| 15 | +MDK version 5.23 provides two compilers: ARM Compiler 5.06 and ARM Compiler 6.6. |
|
| 16 | + |
|
| 17 | +Software packages must also support ARM Compiler 6. The minimum required package versions are: |
|
| 18 | + |
|
| 19 | +- **Keil MDK-Middleware package:** Version 7.4.0 and above |
|
| 20 | +- **Keil ARM Compiler Support package:** Version 1.3.0 and above |
|
| 21 | +- **ARM CMSIS package:** Version 5.0.1 and above |
|
| 22 | + |
|
| 23 | +## Step 1: Switching the Compiler |
|
| 24 | + |
|
| 25 | +1. Open your project in MDK |
|
| 26 | +2. Select **Project → Options for Target** from the menu |
|
| 27 | +3. Click the **Target** tab and find the **ARM Compiler:** dropdown list |
|
| 28 | +4. Set the ARM compiler to **Version 6** |
|
| 29 | +5. Click **OK** to confirm the changes |
|
| 30 | + |
|
| 31 | +> **Note:** After switching, all ARM Compiler 6 settings will be set to default values. |
|
| 32 | + |
|
| 33 | +## Step 2: Setting Warning Levels |
|
| 34 | + |
|
| 35 | +ARM Compiler 6 provides more warning levels than ARM Compiler 5. If you're accustomed to ARM Compiler 5's warning levels, select **AC5-like Warnings**. |
|
| 36 | + |
|
| 37 | +### Disabling Specific Warnings |
|
| 38 | + |
|
| 39 | +You can disable warnings for specific diagnostic groups by adding `-Wno-` before the parameter. |
|
| 40 | + |
|
| 41 | +**Example:** The option `-Wno-missing-noreturn` disables `–Wmissing-noreturn`. |
|
| 42 | + |
|
| 43 | +### Misc Controls Configuration |
|
| 44 | + |
|
| 45 | +1. **Initial Migration Step:** Set the level to "No warnings" to focus on error messages first |
|
| 46 | +2. **After Resolving Errors:** Select **AC5-like Warnings** and set the `-Wno-invalid-source-encoding` option to disable source code encoding detection (useful for projects with Chinese characters in LCD and print messages) |
|
| 47 | +3. **Code Quality Testing:** Select **All warnings** to test code compliance |
|
| 48 | + |
|
| 49 | +## Step 3: Setting Optimization Levels |
|
| 50 | + |
|
| 51 | +### Recommended Options: |
|
| 52 | + |
|
| 53 | +- **`-Os balanced`**: Balances code size and performance |
|
| 54 | +- **Speed Optimization**: Use `-O2`, `-O3`, or `-Ofast` for faster execution (increasing optimization levels, but larger code size) |
|
| 55 | +- **Size Optimization**: Use `-Os balanced` or `-Oz image size` for smaller code size |
|
| 56 | + |
|
| 57 | +### Real Example Comparison: |
|
| 58 | + |
|
| 59 | +- `-Oz image size`: Code size = 103,026 bytes |
|
| 60 | +- `-Os balanced`: Code size = 115,848 bytes |
|
| 61 | +- `-O3`: Code size = 160,536 bytes |
|
| 62 | + |
|
| 63 | +**Note:** |
|
| 64 | +- `-O0` performs no optimization |
|
| 65 | +- ARM Compiler 5's `-O0` actually has some optimization, so ARM Compiler 6's `-O1` level is most similar to ARM Compiler 5's `-O0`, both providing good debugging experience |
|
| 66 | + |
|
| 67 | +## Step 4: Handling Incompatible Language Extensions |
|
| 68 | + |
|
| 69 | +The main issues are compiler extension keywords like `__align(x)`, `__packed`, `__weak` in your code. The solution is to use CMSIS-defined macros. |
|
| 70 | + |
|
| 71 | +### 4.1 Replace CMSIS Header Files |
|
| 72 | + |
|
| 73 | +Use CMSIS version 5.6.0 or newer: |
|
| 74 | + |
|
| 75 | +1. Find the appropriate CMSIS version in `.\Keil_v5\ARM\PACK\ARM\CMSIS` |
|
| 76 | +2. Replace files in your project's `code_cm3.h` folder with files from `.\Keil_v5\ARM\PACK\ARM\CMSIS\5.6.0\CMSIS\Core\Include` |
|
| 77 | + |
|
| 78 | +### 4.2 Modify lwIP Protocol Stack's cc.h File |
|
| 79 | + |
|
| 80 | +lwIP uses compiler extension language for struct alignment optimization. Since ARM Compiler 5 and 6 have different extensions, modify the `cc.h` file: |
|
| 81 | + |
|
| 82 | +Include CMSIS's `cmsis_compiler.h` file and modify struct packing and alignment macros: |
|
| 83 | + |
|
| 84 | +```c |
|
| 85 | +/* Arm Compiler 4/5 */ |
|
| 86 | +#if defined ( __CC_ARM ) |
|
| 87 | + #define PACK_STRUCT_BEGIN __packed |
|
| 88 | + #define PACK_STRUCT_STRUCT |
|
| 89 | + #define PACK_STRUCT_END |
|
| 90 | + #define PACK_STRUCT_FIELD(fld) fld |
|
| 91 | + #define ALIGNED(n) __ALIGNED(n) |
|
| 92 | + |
|
| 93 | + /* Arm Compiler above 6.10.1 (armclang) */ |
|
| 94 | +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6100100) |
|
| 95 | + #define PACK_STRUCT_BEGIN |
|
| 96 | + #define PACK_STRUCT_STRUCT __PACKED |
|
| 97 | + #define PACK_STRUCT_END |
|
| 98 | + #define PACK_STRUCT_FIELD(fld) fld |
|
| 99 | + #define ALIGNED(n) __ALIGNED(n) |
|
| 100 | + |
|
| 101 | +/* GNU Compiler */ |
|
| 102 | +#elif defined ( __GNUC__ ) |
|
| 103 | + #define PACK_STRUCT_BEGIN |
|
| 104 | + #define PACK_STRUCT_STRUCT __PACKED |
|
| 105 | + #define PACK_STRUCT_END |
|
| 106 | + #define PACK_STRUCT_FIELD(fld) fld |
|
| 107 | + #define ALIGNED(n) __ALIGNED(n) |
|
| 108 | + |
|
| 109 | +#else |
|
| 110 | + #error "Unsupported compiler" |
|
| 111 | +#endif |
|
| 112 | +``` |
|
| 113 | + |
|
| 114 | +### 4.3 Replace Compiler-Specific Keywords |
|
| 115 | + |
|
| 116 | +Replace the following keywords with CMSIS macros: |
|
| 117 | + |
|
| 118 | +- `__packed` → `__PACKED` |
|
| 119 | +- `__align(n)` → `__ALIGNED(n)` |
|
| 120 | +- `__inline` → `__INLINE` |
|
| 121 | +- `__weak` → `__WEAK` |
|
| 122 | + |
|
| 123 | +### 4.4 Packed Struct Syntax Differences |
|
| 124 | + |
|
| 125 | +**ARM Compiler 5:** |
|
| 126 | +```c |
|
| 127 | +typedef __packed struct |
|
| 128 | +{ |
|
| 129 | + char x; |
|
| 130 | + int y; |
|
| 131 | +} X; |
|
| 132 | +``` |
|
| 133 | + |
|
| 134 | +**ARM Compiler 6:** |
|
| 135 | +```c |
|
| 136 | +typedef struct __attribute__((packed)) |
|
| 137 | +{ |
|
| 138 | + char x; |
|
| 139 | + int y; |
|
| 140 | +} X; |
|
| 141 | +``` |
|
| 142 | + |
|
| 143 | +### 4.5 Recommended CMSIS Macro Syntax |
|
| 144 | + |
|
| 145 | +Use `typedef __PACKED_STRUCT {}X;` instead of `typedef __packed struct {}X;` |
|
| 146 | + |
|
| 147 | +- **ARM Compiler 5:** Expands to `typedef __packed struct {}X;` |
|
| 148 | +- **ARM Compiler 6:** Expands to `typedef struct __attribute__((packed)) {}X;` |
|
| 149 | + |
|
| 150 | +### 4.6 Inline Functions |
|
| 151 | + |
|
| 152 | +Use the following format for inline functions: |
|
| 153 | + |
|
| 154 | +```c |
|
| 155 | +__STATIC_INLINE func_name(arg) |
|
| 156 | +{ |
|
| 157 | + // function body |
|
| 158 | +} |
|
| 159 | +``` |
|
| 160 | + |
|
| 161 | +This prevents undefined symbol errors during linking at `-O0` and `-O1` optimization levels (where `__INLINE` might not actually inline). |
|
| 162 | + |
|
| 163 | +> **Tip:** Use uVision IDE's search function to find the above keywords and migrate them accordingly. |
|
| 164 | + |
|
| 165 | + |
|
| 166 | + |
|
| 167 | + |
|
| 168 | + |
|
| 169 | + |
|
| 170 | + |
|
| 171 | + |
|
| 172 | +## Step 5: Handling Inline Assembly |
|
| 173 | + |
|
| 174 | +ARM Compiler 6 completely changed its assembly code handling strategy: |
|
| 175 | + |
|
| 176 | +- Assembly syntax is now GNU-style compatible instead of ARM-style |
|
| 177 | +- Assembly is handled by the C compiler, no separate assembler needed |
|
| 178 | + |
|
| 179 | +### FreeRTOS Port Layer Changes |
|
| 180 | + |
|
| 181 | +Change from: |
|
| 182 | +- `..\FreeRTOS\Source\portable\RVDS\ARM_CM3` directory files |
|
| 183 | + |
|
| 184 | +To: |
|
| 185 | +- `..\FreeRTOS\Source\portable\GCC\ARM_CM3` directory files |
|
| 186 | + |
|
| 187 | +This affects `port.c` and `portmacro.h` files that involve inline assembly. |
|
| 188 | + |
|
| 189 | +### Custom Inline Assembly Functions |
|
| 190 | + |
|
| 191 | +**ARM Compiler 5:** |
|
| 192 | +```c |
|
| 193 | +__asm uint32_t __get_flash_base(void) |
|
| 194 | +{ |
|
| 195 | + IMPORT |Image$$ER_IROM1$$RO$$Base|; |
|
| 196 | + |
|
| 197 | + ldr r0,=|Image$$ER_IROM1$$RO$$Base|; |
|
| 198 | + bx lr; |
|
| 199 | +} |
|
| 200 | +``` |
|
| 201 | + |
|
| 202 | +**ARM Compiler 6:** (Assembly-free alternative) |
|
| 203 | +```c |
|
| 204 | +uint32_t get_flash_base(void) |
|
| 205 | +{ |
|
| 206 | + extern uint32_t Image$$ER_IROM1$$RO$$Base; |
|
| 207 | + |
|
| 208 | + return (uint32_t)&Image$$ER_IROM1$$RO$$Base; |
|
| 209 | +} |
|
| 210 | +``` |
|
| 211 | + |
|
| 212 | +## Step 6: Stricter Syntax Requirements |
|
| 213 | + |
|
| 214 | +### Example 1: Static Declaration Conflicts |
|
| 215 | + |
|
| 216 | +**Problem:** Function previously public, later made static in `.c` file, but declaration not removed from `.h` file. |
|
| 217 | + |
|
| 218 | +- **ARM Compiler 5:** No error |
|
| 219 | +- **ARM Compiler 6:** Error: `static declaration of 'func_name' follows non-static declaration` |
|
| 220 | + |
|
| 221 | +### Example 2: Integer Constant Syntax |
|
| 222 | + |
|
| 223 | +**Problematic code:** |
|
| 224 | +```c |
|
| 225 | +for(i=0; i<0x7E-0x20; i++) |
|
| 226 | +``` |
|
| 227 | + |
|
| 228 | +**ARM Compiler 6 Error:** `invalid suffix '-0x20' on integer constant` |
|
| 229 | + |
|
| 230 | +**Solution:** |
|
| 231 | +```c |
|
| 232 | +for(i=0; i<0x7E - 0x20; i++) // Add spaces around operator |
|
| 233 | +``` |
|
| 234 | + |
|
| 235 | +## Step 7: Optimization Issues |
|
| 236 | + |
|
| 237 | +### Software Delay Function Problem |
|
| 238 | + |
|
| 239 | +The following code works in ARM Compiler 5 but gets optimized away in ARM Compiler 6 (except at `-O0` level): |
|
| 240 | + |
|
| 241 | +```c |
|
| 242 | +void delay_us (uint32_t ul_time) |
|
| 243 | +{ |
|
| 244 | + ul_time *= 30; |
|
| 245 | + while(--ul_time != 0); // Empty loop gets optimized away |
|
| 246 | +} |
|
| 247 | +``` |
|
| 248 | + |
|
| 249 | +**Symptoms:** Software I2C errors, software SPI errors, LCD black screen, etc. |
|
| 250 | + |
|
| 251 | +**Solution:** |
|
| 252 | +```c |
|
| 253 | +void delay_us (uint32_t ul_time) |
|
| 254 | +{ |
|
| 255 | + ul_time *= 30; |
|
| 256 | + while(--ul_time != 0) |
|
| 257 | + __nop(); // Prevents compiler optimization |
|
| 258 | +} |
|
| 259 | +``` |
|
| 260 | + |
|
| 261 | +The Keil compiler guarantees that `__nop()` will insert a NOP instruction, preventing optimization. Adjust the initial delay value accordingly. |
|
| 262 | + |
|
| 263 | +## Step 8: Compilation Time and Size Comparison |
|
| 264 | + |
|
| 265 | +### ARM Compiler 6 Results: |
|
| 266 | + |
|
| 267 | +| Optimization Level | Code Size | RO-data | RW-data | ZI-data | Build Time | |
|
| 268 | +|-------------------|-----------|---------|---------|---------|------------| |
|
| 269 | +| `-O0` | 200,360 | 20,576 | 96 | 76,316 | 00:00:25 | |
|
| 270 | +| `-O1` | 119,328 | 16,824 | 96 | 76,300 | 00:00:25 | |
|
| 271 | +| `-O2` | 153,340 | 17,100 | 96 | 76,300 | 00:00:26 | |
|
| 272 | +| `-O3` | 162,292 | 17,040 | 96 | 76,308 | 00:00:27 | |
|
| 273 | +| `-Ofast` | 161,896 | 17,040 | 96 | 76,308 | 00:00:26 | |
|
| 274 | +| `-Os balanced` | 115,628 | 17,048 | 96 | 76,300 | 00:00:28 | |
|
| 275 | +| `-Oz image size` | 103,784 | 17,020 | 96 | 76,308 | 00:00:25 | |
|
| 276 | +| `-Oz image size LTO` | 85,888 | 17,064 | 40 | 75,960 | 00:00:32 | |
|
| 277 | + |
|
| 278 | +### ARM Compiler 5 Comparison: |
|
| 279 | + |
|
| 280 | +| Optimization Level | Code Size | RO-data | RW-data | ZI-data | Build Time | |
|
| 281 | +|-------------------|-----------|---------|---------|---------|------------| |
|
| 282 | +| `-O2` | 94,232 | 16,736 | 540 | 75,640 | 00:00:16 | |
|
| 283 | + |
|
| 284 | +## Conclusion |
|
| 285 | + |
|
| 286 | +This migration guide covers the essential steps for successfully transitioning from ARM Compiler 5 to ARM Compiler 6. The key areas requiring attention are: |
|
| 287 | + |
|
| 288 | +1. **Compiler settings and warning levels** |
|
| 289 | +2. **CMSIS macro replacements for language extensions** |
|
| 290 | +3. **Inline assembly syntax changes** |
|
| 291 | +4. **Stricter syntax requirements** |
|
| 292 | +5. **Optimization behavior differences** |
|
| 293 | + |
|
| 294 | +Following these steps systematically will ensure a smooth migration while taking advantage of ARM Compiler 6's improved optimization capabilities. |
SDK-dat/MDK-ARM-dat/MDK-ARM-dat.md
| ... | ... | @@ -4,7 +4,25 @@ |
| 4 | 4 | |
| 5 | 5 | ## KEIL-MDK |
| 6 | 6 | |
| 7 | +- 5.4 |
|
| 7 | 8 | - 5.3.8 |
| 9 | +- 5.3.4 |
|
| 10 | + |
|
| 11 | +- https://armkeil.blob.core.windows.net/eval/MDK539.EXE |
|
| 12 | +- https://armkeil.blob.core.windows.net/eval/MDK538a.EXE |
|
| 13 | +- https://armkeil.blob.core.windows.net/eval/MDK538.EXE |
|
| 14 | +- https://armkeil.blob.core.windows.net/eval/MDK537.EXE |
|
| 15 | +- https://armkeil.blob.core.windows.net/eval/MDK536.EXE |
|
| 16 | +- https://armkeil.blob.core.windows.net/eval/MDK535.EXE |
|
| 17 | +- https://armkeil.blob.core.windows.net/eval/MDK534.EXE |
|
| 18 | +- https://armkeil.blob.core.windows.net/eval/MDK533.EXE |
|
| 19 | +- https://armkeil.blob.core.windows.net/eval/MDK532.EXE |
|
| 20 | +- https://armkeil.blob.core.windows.net/eval/MDK531.EXE |
|
| 21 | +- https://armkeil.blob.core.windows.net/eval/MDK530.EXE |
|
| 22 | +- https://armkeil.blob.core.windows.net/eval/MDK529.EXE |
|
| 23 | +- https://armkeil.blob.core.windows.net/eval/MDK528.EXE |
|
| 24 | +- https://armkeil.blob.core.windows.net/eval/MDK527.EXE |
|
| 25 | +- https://armkeil.blob.core.windows.net/eval/MDK526.EXE |
|
| 8 | 26 | |
| 9 | 27 | |
| 10 | 28 | ## Output file |
SDK-dat/STM32-SDK-dat/STM32-SDK-dat.md
| ... | ... | @@ -19,9 +19,9 @@ |
| 19 | 19 | |
| 20 | 20 | - [[keil-dat]] - [[MDK-ARM-dat]] |
| 21 | 21 | |
| 22 | - |
|
| 22 | +- [[IAR-dat]] - [[STM32cubeide-dat]] - [[GCC-dat]] |
|
| 23 | 23 | |
| 24 | 24 | |
| 25 | 25 | ## ref |
| 26 | 26 | |
| 27 | -- [[STM32-dat]] |
|
| ... | ... | \ No newline at end of file |
| 0 | +- [[STM32-dat]] - [[info]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/ADC-dat/ADC-dat.md
| ... | ... | @@ -1,3 +1,12 @@ |
| 1 | 1 | |
| 2 | 2 | # ADC-dat |
| 3 | 3 | |
| 4 | +## chips |
|
| 5 | + |
|
| 6 | +- [[ADS1100-dat]] |
|
| 7 | +- AD7606 |
|
| 8 | +- AD7799 |
|
| 9 | + |
|
| 10 | +## ref |
|
| 11 | + |
|
| 12 | +- [[tech-dat]] |
Tech-dat/Interface-dat/USB-dat/USB-protection-dat/USB-protection-dat.md
| ... | ... | @@ -0,0 +1,6 @@ |
| 1 | + |
|
| 2 | +# USB-protection-dat |
|
| 3 | + |
|
| 4 | +## ref |
|
| 5 | + |
|
| 6 | +- [[USB-protection]] - [[USB]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/NFC-dat/NFC-dat.md
| ... | ... | @@ -4,6 +4,10 @@ |
| 4 | 4 | |
| 5 | 5 | - [legacy wiki page ](https://w.electrodragon.com/w/Category:NFC) |
| 6 | 6 | |
| 7 | +- [CLRC66303 == CLRC663 plus Family: High-Performance NFC Frontends](https://www.nxp.com/products/CLRC66303HN) |
|
| 8 | + |
|
| 9 | + |
|
| 10 | + |
|
| 7 | 11 | ## Boards |
| 8 | 12 | |
| 9 | 13 | - [[NID1026-dat]] - [[NID1017-dat]] |
Tech-dat/Network-dat/ethernet-dat/ethernet-dat.md
| ... | ... | @@ -3,6 +3,15 @@ |
| 3 | 3 | |
| 4 | 4 | - [[TCPUDP-dat]] |
| 5 | 5 | |
| 6 | +- [[PHY-dat]] |
|
| 7 | + |
|
| 8 | + |
|
| 9 | +## chip |
|
| 10 | + |
|
| 11 | +- [[W5500-dat]] - [[ENC28J60-dat]] |
|
| 12 | + |
|
| 13 | + |
|
| 14 | + |
|
| 6 | 15 | ## RJ45 breakout board |
| 7 | 16 | |
| 8 | 17 |  |
| ... | ... | @@ -29,6 +38,6 @@ RJ-45 w/[[CH579-dat]] |
| 29 | 38 |  |
| 30 | 39 | |
| 31 | 40 | |
| 32 | - |
|
| 41 | +## ref |
|
| 33 | 42 | |
| 34 | 43 | - [[ethernet]] |
| ... | ... | \ No newline at end of file |
Tech-dat/acturator-dat/motor-driver-dat/FOC-dat/FOC-dat.md
| ... | ... | @@ -1,6 +1,8 @@ |
| 1 | 1 | |
| 2 | 2 | # FOC-dat |
| 3 | 3 | |
| 4 | +- [[FOC]] |
|
| 5 | + |
|
| 4 | 6 | **Field-Oriented Control (FOC)** is an advanced control strategy for electric motors, particularly permanent magnet synchronous motors (PMSM) and AC induction motors. It allows for precise and efficient control of motor torque and speed. |
| 5 | 7 | |
| 6 | 8 | Here's a breakdown: |
Tech-dat/prototyping-dat/soldering-dat/soldering-dat.md
| ... | ... | @@ -1,10 +1,11 @@ |
| 1 | - |
|
| 2 | 1 | # soldering-dat |
| 3 | 2 | |
| 4 | 3 | - [[PSO1043-dat]] - [[PSO1038-dat]] |
| 5 | 4 | |
| 6 | 5 | - [[PCB-cleaner-dat]] |
| 7 | 6 | |
| 7 | +- [[soldering-paste-dat]] |
|
| 8 | + |
|
| 8 | 9 | ## Soldering Iron and Tips |
| 9 | 10 | |
| 10 | 11 | soldering iron |
| ... | ... | @@ -58,8 +59,18 @@ Common soldering tips system: (C1151), ESD(C1152), 900, 900M, 907, 933, 936, 937 |
| 58 | 59 | |
| 59 | 60 | ### soldering chip with pads underneath, such as QFN, BGA, LGA, etc. |
| 60 | 61 | |
| 62 | +### FPC soldering |
|
| 63 | + |
|
| 64 | +- [[FPC-dat]] |
|
| 65 | + |
|
| 66 | +### alternative temperature-sensitive items soldering |
|
| 61 | 67 | |
| 62 | 68 | |
| 69 | +> No special solder paste is needed; the key point is not to heat the FPC connector directly—apply heat from the back side of the PCB. |
|
| 70 | +> |
|
| 71 | +> **Explanation:** |
|
| 72 | +> When soldering temperature-sensitive components like FPC (Flexible Printed Circuit) connectors, you generally do not need to use any special type of solder paste. The most important thing is to avoid applying hot air or direct heat to the FPC connector itself, as it can be easily damaged by high temperatures. |
|
| 73 | +> Instead, use a hot air gun or soldering tool to heat the solder joints from the back side of the PCB. This approach helps protect the delicate connector and ensures a reliable solder joint. |
|
| 63 | 74 | |
| 64 | 75 | ## ref |
| 65 | 76 |
Tech-dat/prototyping-dat/soldering-paste-dat/soldering-paste-dat.md
| ... | ... | @@ -0,0 +1,25 @@ |
| 1 | + |
|
| 2 | +# soldering-paste-dat |
|
| 3 | + |
|
| 4 | +## Low temperature soldering paste |
|
| 5 | + |
|
| 6 | +Low temperature soldering paste is a type of solder paste designed to melt and flow at lower temperatures than standard solder pastes. Here are its main features: |
|
| 7 | + |
|
| 8 | +- Melting Point: Typically melts between 130°C and 180°C, compared to standard lead-free solder pastes which melt around 217°C. |
|
| 9 | +- Composition: Often contains bismuth-based alloys (e.g., Sn42/Bi58) instead of traditional tin-silver-copper (SAC) alloys. |
|
| 10 | +- Applications: Ideal for temperature-sensitive components, rework, or double-sided PCB assembly where high heat could damage parts. |
|
| 11 | +- Reduced Thermal Stress: Minimizes risk of warping or damaging PCBs and components. |
|
| 12 | +- Energy Saving: Lower reflow oven temperatures reduce energy consumption. |
|
| 13 | +- Compatibility: Useful for mixed-technology boards or assemblies with plastic connectors and LEDs. |
|
| 14 | + |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | +## target |
|
| 19 | + |
|
| 20 | +- [[FPC-dat]] |
|
| 21 | + |
|
| 22 | + |
|
| 23 | +## ref |
|
| 24 | + |
|
| 25 | +- [[soldering-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/tech-dat.md
| ... | ... | @@ -52,6 +52,10 @@ |
| 52 | 52 | |
| 53 | 53 | - [[M2M-dat]] |
| 54 | 54 | |
| 55 | +- [[RFID-dat]] - [[NFC-dat]] |
|
| 56 | + |
|
| 57 | +- [[ethernet-dat]] - [[USB-dat]] |
|
| 58 | + |
|
| 55 | 59 | ### MCU / CTRL / Processing |
| 56 | 60 | |
| 57 | 61 | - [[mcu-dat]] - [[development-board-dat]] |
| ... | ... | @@ -78,7 +82,9 @@ |
| 78 | 82 | |
| 79 | 83 | - [[sensor-dat]] - [[current-sensor-dat]] - [[current-transformer-dat]] |
| 80 | 84 | |
| 81 | -- [[acturator-dat]] - [[motor-dat]] - [[motor-driver-dat]]- [[motion-control-system-dat]] - [[dc-gear-motor-dat]] - [[mosfet-dat]] - [[relay-dat]] |
|
| 85 | +- [[acturator-dat]] - [[motor-dat]] - [[motion-control-system-dat]] - [[dc-gear-motor-dat]] - [[mosfet-dat]] - [[relay-dat]] |
|
| 86 | + |
|
| 87 | +- [[motor-driver-dat]] |
|
| 82 | 88 | |
| 83 | 89 | - [[relay-dat]] - [[SSR-dat]] |
| 84 | 90 | |
| ... | ... | @@ -99,6 +105,7 @@ |
| 99 | 105 | |
| 100 | 106 | - [[PWM-dat]] - [[I2C-dat]] - [[SPI-dat]] - [[UART-dat]] - [[CAN-dat]] - [[RS485-dat]] - [[RS232-dat]] |
| 101 | 107 | |
| 108 | +- [[ADC-dat]] - [[DAC-dat]] |
|
| 102 | 109 | |
| 103 | 110 | ## Utilities |
| 104 | 111 |
board-series-dat/led-rgb-panel-dat/led-rgb-panel-dat.md
| ... | ... | @@ -72,6 +72,11 @@ Gen-3: Advanced grayscale panels using chips like MBI5153 or ICND2153 that suppo |
| 72 | 72 | |
| 73 | 73 | - chips perforamcne issues [[led-rgb-panel-chip-dat]] |
| 74 | 74 | |
| 75 | +## Control board |
|
| 76 | + |
|
| 77 | +- [[MPC1073-dat]] - [[MPC1120-dat]] |
|
| 78 | + |
|
| 79 | + |
|
| 75 | 80 | ## Links |
| 76 | 81 | |
| 77 | 82 | - [[ILE1058-dat]] - [[ILE1059-dat]] - [[ILE1060-dat]] - [[led-rgb-panel-dat]] |
power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-57-46.png
| ... | ... | Binary files /dev/null and b/power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-57-46.png differ |
power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-58-05.png
| ... | ... | Binary files /dev/null and b/power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-58-05.png differ |
power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-58-23.png
| ... | ... | Binary files /dev/null and b/power-dat/AC-Mains-dat/RC-Snubber-dat/2025-07-09-01-58-23.png differ |
power-dat/AC-Mains-dat/RC-Snubber-dat/RC-Snubber-dat.md
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | + |
|
| 2 | +# RC-Snubber-dat |
|
| 3 | + |
|
| 4 | +## Three-Phase Electronic Arc Suppressor (RC Snubber) |
|
| 5 | + |
|
| 6 | +三相电子灭弧器,也叫RC灭弧器或电弧抑制器,它的本质是一个 RC串联电路(电阻+电容),并联在接触器触点的两端,通常用于三相交流电机控制回路中,目的是在接触器断开时**抑制电弧(火花)**的产生和传播。 |
|
| 7 | + |
|
| 8 | + |
|
| 9 | +A **three-phase electronic arc suppressor** is used to eliminate electrical arcing when contactors open, especially in circuits with **three-phase induction motors**. Its core is a **series RC circuit (resistor + capacitor)** connected in **parallel** across each contact of the contactor. |
|
| 10 | + |
|
| 11 | + |
|
| 12 | + |
|
| 13 | + |
|
| 14 | + |
|
| 15 | + |
|
| 16 | + |
|
| 17 | +### 🔧 Working Principle |
|
| 18 | + |
|
| 19 | +When a contactor opens to disconnect an inductive load (like a motor), the sudden interruption of current causes a **high voltage spike** due to the inductance. This spike can generate an **electric arc** across the opening contacts. |
|
| 20 | + |
|
| 21 | +The **RC snubber** provides an alternate path for the current to decay safely by: |
|
| 22 | +- **Capacitor (C):** Absorbing the voltage spike |
|
| 23 | +- **Resistor (R):** Limiting the discharge current and damping oscillations |
|
| 24 | + |
|
| 25 | +This effectively reduces the arc and protects the contactor. |
|
| 26 | + |
|
| 27 | +### ✅ Typical Structure |
|
| 28 | + |
|
| 29 | +A three-phase arc suppressor generally includes: |
|
| 30 | +- **Capacitor (C):** e.g., 0.1μF to 0.47μF (AC-rated) |
|
| 31 | +- **Resistor (R):** e.g., 100Ω to 220Ω (sufficient wattage and voltage rating) |
|
| 32 | +- **Encapsulation:** Often epoxy-encased with mounting hardware for panel installation |
|
| 33 | + |
|
| 34 | +Each phase (L1, L2, L3) has one RC snubber connected across the contact. |
|
| 35 | + |
|
| 36 | +### ⚠️ Notes |
|
| 37 | + |
|
| 38 | +- RC values should be chosen based on motor load characteristics and voltage levels. |
|
| 39 | +- Not suitable for direct connection to **VFD (variable frequency drive) output**. |
|
| 40 | +- Designed to **assist with arc suppression**, not as standalone protection. |
|
| 41 | +- Overuse or mismatched parameters can lead to overheating or damage. |
|
| 42 | + |
|
| 43 | +### 📘 Example Application |
|
| 44 | + |
|
| 45 | +For a 380V AC three-phase motor: |
|
| 46 | +- R = 120Ω, 5W |
|
| 47 | +- C = 0.22μF, 630V AC |
|
| 48 | + |
|
| 49 | +One RC network per phase, installed across the contactor terminals. |
|
| ... | ... | \ No newline at end of file |
power-dat/AC-Mains-dat/ac-mains-dat.md
| ... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 | |
| 6 | 6 | - [[acdc-adapter-dat]] - [[acdc-dat]] |
| 7 | 7 | |
| 8 | +- [[RC-Snubber-dat]] |
|
| 8 | 9 | |
| 9 | 10 | [[BOM-dat]] - [[power-isolated-Module-dat]] - [[sample-resistor-dat]] |
| 10 | 11 |
power-dat/Power-distribution-dat/Power-distribution-dat.md
| ... | ... | @@ -1,6 +1,15 @@ |
| 1 | 1 | |
| 2 | 2 | # power-flow-contro-dat |
| 3 | 3 | |
| 4 | + |
|
| 5 | +## 12/24V to 3.3V |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +- It is more reliable to use a 5V DC-DC converter first, then use a linear regulator chip to step down to 3.3V. Directly outputting 3.3V from a DC-DC converter can easily damage the microcontroller due to surge voltage. |
|
| 9 | +- The output of a DC-DC module is not regulated; when powered on with a light load, the output voltage is higher than 3.3V. A load must be added to stabilize it at 3.3V, so an LDO should be connected afterward. |
|
| 10 | +- My usual approach is to step down from 24V to 5V first, then use a [[B0505-dat]] module for isolation, and finally step down to 3.3V. The 0505 module is much cheaper than an isolated 24V-to-5V module. |
|
| 11 | + |
|
| 12 | + |
|
| 4 | 13 | ## USB Logic control for [[SDR1096-DAT]] |
| 5 | 14 | |
| 6 | 15 | [[logic-gate-dat]] |
power-dat/battery-charger-dat/battery-charger-dat.md
| ... | ... | @@ -6,6 +6,8 @@ The most following charger options are for the lithium-ion battery |
| 6 | 6 | |
| 7 | 7 | - [[2S-lithium-battery-charger-dat]] |
| 8 | 8 | |
| 9 | +- [[battery-charger]] |
|
| 10 | + |
|
| 9 | 11 | ## Chip Info |
| 10 | 12 | |
| 11 | 13 | - [[LTC4054-dat]] - [[MCP73831-dat]] |