<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>STM32 &amp;amp; C언어 디자인 패턴</title>
    <link>https://cpattern.tistory.com/</link>
    <description>STM32 MCU와 C언어 디자인 패턴에 대한 글을 공유합니다.</description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 06:52:54 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>좋은아침페스츄리</managingEditor>
    <image>
      <title>STM32 &amp;amp; C언어 디자인 패턴</title>
      <url>https://t1.daumcdn.net/cfile/tistory/236A5850562220BC3B</url>
      <link>https://cpattern.tistory.com</link>
    </image>
    <item>
      <title>RTC  MASK 와 WDSEL 설정</title>
      <link>https://cpattern.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;RTC Alarm 설정을 하기 위해선 아래와 같은 CubeMX에서 설정을 해주어야 합니다. 그런데 요기서 Alarm Date Week Day Sel이라는 파라메터가 있는데 뭔지 좀 헷갈립니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpd2np/btsJD8NDEgb/O4j8ZkPe8kVnEBAAbAAWD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpd2np/btsJD8NDEgb/O4j8ZkPe8kVnEBAAbAAWD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpd2np/btsJD8NDEgb/O4j8ZkPe8kVnEBAAbAAWD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpd2np%2FbtsJD8NDEgb%2FO4j8ZkPe8kVnEBAAbAAWD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;559&quot; height=&quot;911&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;911&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Date로 설정하고 Generate 되어 있는 Code에서 해당 변수를 확인해 보았습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726568871108&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;sAlarm.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;AlarmDateWeekDaySel&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = RTC_ALARMDATEWEEKDAYSEL_DATE;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 부분은데 이는 RTC_ALRMAR의 WDSEL 비트의 설정입니다.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfN2Yb/btsJDZcaVvt/XEDe7xFMfiXG9BoHM9elS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfN2Yb/btsJDZcaVvt/XEDe7xFMfiXG9BoHM9elS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfN2Yb/btsJDZcaVvt/XEDe7xFMfiXG9BoHM9elS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfN2Yb%2FbtsJDZcaVvt%2FXEDe7xFMfiXG9BoHM9elS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;894&quot; height=&quot;624&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른 어플리케이션 노트에 보니 아래와 같이 표시되어 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&quot;WDSEL = 0인 경우 모든 경우가 유사합니다. 다만 알람 마스크 필드는 요일이 아닌 일 번호와 비교하고, MSKx 비트는 0000b로 설정해야 합니다.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;네 맞습니다. WDSEL을 0으로 하면 알람의 세팅이 날짜로 세팅이 가능하고 1로 세팅하며 요일로 세팅이 가능하다는 말이었습니다. 만약 매달 17일에 알람을 하고 싶으면 아래와 같이 세팅하여야 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1726569132213&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
  sAlarm.AlarmDateWeekDay = 0x17;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 요일로 하고 싶으면 아래와 같이 설정하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726569177304&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;
  sAlarm.AlarmDateWeekDay = RTC_WEEKDAY_TUESDAY;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 Mask 설정에 따라 알람의 방법을 달리 할 수 있습니다. 세팅되어 있는 MSKx에 따라 시간 혹은 날짜 알람을 무시하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bElIn6/btsJDnEWhsy/6lmfUddQ4LtxeK5R2WWZ6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bElIn6/btsJDnEWhsy/6lmfUddQ4LtxeK5R2WWZ6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bElIn6/btsJDnEWhsy/6lmfUddQ4LtxeK5R2WWZ6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbElIn6%2FbtsJDnEWhsy%2F6lmfUddQ4LtxeK5R2WWZ6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;314&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnweJ1/btsJFKkyzMJ/vU3PzMDiDAVOFwFGKsvJu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnweJ1/btsJFKkyzMJ/vU3PzMDiDAVOFwFGKsvJu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnweJ1/btsJFKkyzMJ/vU3PzMDiDAVOFwFGKsvJu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnweJ1%2FbtsJFKkyzMJ%2FvU3PzMDiDAVOFwFGKsvJu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;678&quot; height=&quot;380&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/soloungos/stm32g431_stop_mode_test/tree/master&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/soloungos/stm32g431_stop_mode_test/tree/master&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726619957385&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - soloungos/stm32g431_stop_mode_test: RTC and Stop mode test for STM32&quot; data-og-description=&quot;RTC and Stop mode test for STM32. Contribute to soloungos/stm32g431_stop_mode_test development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/soloungos/stm32g431_stop_mode_test/tree/master&quot; data-og-url=&quot;https://github.com/soloungos/stm32g431_stop_mode_test&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bUB4qz/hyW21HT0WX/UersZK9JB371y5zRPv6IX1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/soloungos/stm32g431_stop_mode_test/tree/master&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/soloungos/stm32g431_stop_mode_test/tree/master&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bUB4qz/hyW21HT0WX/UersZK9JB371y5zRPv6IX1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - soloungos/stm32g431_stop_mode_test: RTC and Stop mode test for STM32&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;RTC and Stop mode test for STM32. Contribute to soloungos/stm32g431_stop_mode_test development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;끝&amp;gt;&lt;/p&gt;</description>
      <category>▶ STM32/Peripheral</category>
      <category>Alarm</category>
      <category>alarmdateweekdaysel</category>
      <category>interrupt</category>
      <category>LSE</category>
      <category>LSI</category>
      <category>RTC</category>
      <category>STM32</category>
      <category>wdsel</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/233</guid>
      <comments>https://cpattern.tistory.com/233#entry233comment</comments>
      <pubDate>Tue, 17 Sep 2024 19:33:39 +0900</pubDate>
    </item>
    <item>
      <title>EMC guidelines for MCU based applications</title>
      <link>https://cpattern.tistory.com/232</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅은 &lt;a href=&quot;https://www.st.com/resource/en/application_note/an1709-emc-design-guide-for-stm8-stm32-and-legacy-mcus-stmicroelectronics.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AN1709&lt;/a&gt; &lt;b&gt;EMC design guide for STM8, STM32 and legacy MCUs&lt;/b&gt;의 내용을 번역하도록 하겠습니다. 이 가이드는 전자기적인 문제에 안전한 하드웨어를 만드는 기본적인 방법을 설명하고 있으니 시간이 되시는 분들은 꼭 필독하시기를 추천드립니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 전체내용중에 MCU의 EMC 가이드 부분만 발췌하여 번역해보도록 하겠습니다. 먼저 기본적인 용어 부터 살펴보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;EMC&lt;/span&gt;&lt;br /&gt;Electromagnetic compatibility(EMC: 전자기 호환성)은 시스템이 정상적인 환경에 존재하는 전자기 현상의 영향을 받지 않고 제대로 작동하며 다른 장비를 방해할 수 있는 전기 교란을 일으키지 않는 능력입니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;EMS&lt;/span&gt;&lt;br /&gt;Electromagnetic susceptibility(EMS: 전자기 민감도) 수준은 전기 교란 및 전도성 전기 잡음에 대한 저항입니다. 정전기 방전(ESD) 및 고속 과도 버스트(FTB) 테스트는 바람직하지 않은 전자기 환경에서 작동하는 장치의 신뢰성 수준을 결정합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;EMI&lt;/span&gt;&lt;br /&gt;Electromagnetic interference(EMI: 전자기 간)은 장비에서 발생하는 전도 또는 방사 전기 노이즈의 수준입니다. 전도 방출은 케이블이나 상호 연결 라인을 따라 전파됩니다. 복사 방출은 자유 공간을 통해 전파됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; EMC guidelines for MCU based applications &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음&amp;nbsp;지침은&amp;nbsp;다양한&amp;nbsp;응용&amp;nbsp;분야에서&amp;nbsp;얻은&amp;nbsp;경험을&amp;nbsp;바탕으로&amp;nbsp;작성되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;하드웨어&lt;/b&gt;&lt;br /&gt;주요&amp;nbsp;노이즈&amp;nbsp;수용기와&amp;nbsp;발생기는&amp;nbsp;인쇄&amp;nbsp;회로&amp;nbsp;기판(PCB)의&amp;nbsp;트랙과&amp;nbsp;배선,&amp;nbsp;특히&amp;nbsp;MCU&amp;nbsp;근처의&amp;nbsp;트랙과&amp;nbsp;배선입니다.&amp;nbsp;따라서&amp;nbsp;노이즈&amp;nbsp;문제를&amp;nbsp;방지하기&amp;nbsp;위한&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;조치는&amp;nbsp;PCB&amp;nbsp;레이아웃&amp;nbsp;및&amp;nbsp;전원&amp;nbsp;공급&amp;nbsp;장치&amp;nbsp;설계와&amp;nbsp;관련이&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;일반적으로 MCU 주변의 구성 요소 수가 적을수록 잡음 대비 내성이 더 좋아집니다. 예를 들어, ROM 없는 솔루션은 일반적으로 내장형 메모리 회로보다 소음에 더 민감하고 더 큰 노이즈를 발생시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;최적화된&amp;nbsp;PCB&amp;nbsp;레이아웃&lt;/b&gt;&lt;br /&gt;발진한 노이즈는 기본적으로 안테나 역할을 하는 트랙과 구성 요소를 통해 수신되고 전송됩니다.&lt;br /&gt;각&amp;nbsp;루프와&amp;nbsp;트랙에는&amp;nbsp;기생&amp;nbsp;인덕턴스와&amp;nbsp;커패시턴스가&amp;nbsp;포함되어&amp;nbsp;있습니다.&amp;nbsp;이는&amp;nbsp;전류,&amp;nbsp;전압&amp;nbsp;또는&amp;nbsp;전자기&amp;nbsp;플럭스의&amp;nbsp;변화에&amp;nbsp;​​따라&amp;nbsp;에너지를&amp;nbsp;방출하고&amp;nbsp;흡수합니다.&lt;br /&gt;&lt;br /&gt;MCU 칩 자체는 EMI 신호의 파장에 비해 크기가 작기 때문에(일반적으로 GHz 범위의 EMI 신호의 경우 mm 대 10cm) EMI에 대한 높은 내성과 낮은 생성률을 나타냅니다. 따라서 작은 루프와 짧은 와이어를 갖춘 단일 칩 솔루션은 노이즈 문제를 줄여줍니다.&lt;br /&gt;&lt;br /&gt;PCB&amp;nbsp;수준의&amp;nbsp;초기&amp;nbsp;작업은&amp;nbsp;가능한&amp;nbsp;안테나&amp;nbsp;수를&amp;nbsp;줄이는&amp;nbsp;것입니다.&amp;nbsp;공급&amp;nbsp;장치,&amp;nbsp;발진기,&amp;nbsp;I/O&amp;nbsp;등&amp;nbsp;MCU에&amp;nbsp;연결된&amp;nbsp;루프와&amp;nbsp;와이어는&amp;nbsp;특별한&amp;nbsp;주의를&amp;nbsp;기울여&amp;nbsp;고려해야&amp;nbsp;합니다.&amp;nbsp;발진기&amp;nbsp;루프는&amp;nbsp;고주파수에서&amp;nbsp;작동하므로&amp;nbsp;특히&amp;nbsp;작아야&amp;nbsp;합니다(그림&amp;nbsp;17&amp;nbsp;참조).&lt;br /&gt;&lt;br /&gt;트랙의&amp;nbsp;인덕턴스와&amp;nbsp;커패시턴스를&amp;nbsp;모두&amp;nbsp;줄이는&amp;nbsp;것은&amp;nbsp;일반적으로&amp;nbsp;어렵습니다.&amp;nbsp;실제&amp;nbsp;경험에&amp;nbsp;따르면&amp;nbsp;대부분의&amp;nbsp;경우&amp;nbsp;인덕턴스는&amp;nbsp;최소화해야&amp;nbsp;할&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;매개변수입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsjus3/btsIsviuDCq/FKqVAUvJFYcqsbiN5AiXRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsjus3/btsIsviuDCq/FKqVAUvJFYcqsbiN5AiXRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsjus3/btsIsviuDCq/FKqVAUvJFYcqsbiN5AiXRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsjus3%2FbtsIsviuDCq%2FFKqVAUvJFYcqsbiN5AiXRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;403&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덕턴스의&amp;nbsp;감소는&amp;nbsp;트랙의&amp;nbsp;길이와&amp;nbsp;표면을&amp;nbsp;더&amp;nbsp;작게&amp;nbsp;만들어&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이는&amp;nbsp;트랙&amp;nbsp;루프를&amp;nbsp;동일한&amp;nbsp;PCB&amp;nbsp;레이어에&amp;nbsp;더&amp;nbsp;가깝게&amp;nbsp;배치하거나&amp;nbsp;서로의&amp;nbsp;위에&amp;nbsp;배치하여&amp;nbsp;수행됩니다(그림&amp;nbsp;17).&lt;br /&gt;&lt;br /&gt;결과적으로 루프 면적은 작아지고 전자기장은 감소합니다. 인덕턴스 값과 와이어 루프에 의해 정의된 면적과 관련된 크기 순서의 비율은 약 10nH/cm2입니다. 낮은 유도율 전선의 일반적인 예로는 접지층과 공급층이 하나씩 있는 동축 연선 케이블 또는 다층 PCB가 있습니다.&lt;br /&gt;&lt;br /&gt;트랙의 전류 밀도는 트랙 확대 또는 전류 흐름에 장착된 여러 작은 정전용량의 병렬화로 인해 더 작아질 수도 있습니다. 중요한&amp;nbsp;경우에는&amp;nbsp;MCU와&amp;nbsp;PCB&amp;nbsp;사이의&amp;nbsp;거리를&amp;nbsp;최소화해야&amp;nbsp;합니다.&amp;nbsp;이는&amp;nbsp;MCU와&amp;nbsp;해당&amp;nbsp;환경&amp;nbsp;사이의&amp;nbsp;루프&amp;nbsp;표면도&amp;nbsp;최소화되어야&amp;nbsp;함을&amp;nbsp;의미합니다.&lt;br /&gt;&lt;br /&gt;이를&amp;nbsp;달성하려면&amp;nbsp;MCU&amp;nbsp;패키지와&amp;nbsp;PCB&amp;nbsp;사이의&amp;nbsp;소켓을&amp;nbsp;제거하거나&amp;nbsp;듀얼&amp;nbsp;인라인&amp;nbsp;패키지&amp;nbsp;대신&amp;nbsp;표면&amp;nbsp;실장을&amp;nbsp;사용하여&amp;nbsp;세라믹&amp;nbsp;MCU&amp;nbsp;패키지를&amp;nbsp;플라스틱&amp;nbsp;패키지로&amp;nbsp;교체해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;i&gt;참고:&amp;nbsp;보드&amp;nbsp;비아는&amp;nbsp;인덕턴스입니다.&amp;nbsp;그들을&amp;nbsp;피하려고&amp;nbsp;노력하십시오.&amp;nbsp;필요한&amp;nbsp;경우&amp;nbsp;멀티비아를&amp;nbsp;사용하십시오.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceyp3e/btsIsbxNheX/9HQAFhP2ZCk8399mXsumEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceyp3e/btsIsbxNheX/9HQAFhP2ZCk8399mXsumEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceyp3e/btsIsbxNheX/9HQAFhP2ZCk8399mXsumEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fceyp3e%2FbtsIsbxNheX%2F9HQAFhP2ZCk8399mXsumEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;372&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;참고:&amp;nbsp;이&amp;nbsp;테스트는&amp;nbsp;양면&amp;nbsp;PCB를&amp;nbsp;사용하여&amp;nbsp;수행됩니다.&amp;nbsp;절연체&amp;nbsp;두께는&amp;nbsp;1.5mm:&amp;nbsp;구리&amp;nbsp;두께는&amp;nbsp;0.13mm입니다.&amp;nbsp;전체&amp;nbsp;보드&amp;nbsp;크기는&amp;nbsp;65&amp;nbsp;x&amp;nbsp;200mm입니다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전원&amp;nbsp;공급&amp;nbsp;장치&amp;nbsp;필터링&lt;/b&gt;&lt;br /&gt;전원&amp;nbsp;공급&amp;nbsp;장치는&amp;nbsp;회로의&amp;nbsp;모든&amp;nbsp;부분에서&amp;nbsp;사용되므로&amp;nbsp;특별한&amp;nbsp;주의가&amp;nbsp;필요합니다.&amp;nbsp;신호&amp;nbsp;레벨과&amp;nbsp;전력&amp;nbsp;전류가&amp;nbsp;간섭하지&amp;nbsp;않도록&amp;nbsp;공급&amp;nbsp;루프를&amp;nbsp;분리해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;이러한&amp;nbsp;루프는&amp;nbsp;회로에&amp;nbsp;공통으로&amp;nbsp;지정된&amp;nbsp;하나의&amp;nbsp;노드가&amp;nbsp;있는&amp;nbsp;스타&amp;nbsp;배선을&amp;nbsp;사용하여&amp;nbsp;분리할&amp;nbsp;수&amp;nbsp;있습니다(그림&amp;nbsp;19).&amp;nbsp;결과&amp;nbsp;루프를&amp;nbsp;최소화하려면&amp;nbsp;디커플링&amp;nbsp;커패시턴스를&amp;nbsp;MCU&amp;nbsp;공급&amp;nbsp;핀에&amp;nbsp;매우&amp;nbsp;가깝게&amp;nbsp;배치해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;또한&amp;nbsp;상당한&amp;nbsp;전압&amp;nbsp;증가&amp;nbsp;없이&amp;nbsp;입력&amp;nbsp;보호&amp;nbsp;다이오드를&amp;nbsp;통해&amp;nbsp;MCU에서&amp;nbsp;나오는&amp;nbsp;기생&amp;nbsp;전류를&amp;nbsp;흡수할&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;만큼&amp;nbsp;커야&amp;nbsp;합니다.&amp;nbsp;보드의&amp;nbsp;디커플링은&amp;nbsp;전해&amp;nbsp;커패시터(일반적으로&amp;nbsp;10&amp;mu;F&amp;nbsp;~&amp;nbsp;100&amp;mu;F)를&amp;nbsp;사용하여&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이러한&amp;nbsp;커패시터에&amp;nbsp;사용된&amp;nbsp;유전체는&amp;nbsp;높은&amp;nbsp;용량의&amp;nbsp;정전&amp;nbsp;용량을&amp;nbsp;제공하기&amp;nbsp;때문입니다.&lt;br /&gt;&lt;br /&gt;그러나&amp;nbsp;이러한&amp;nbsp;커패시터는&amp;nbsp;고주파수(일반적으로&amp;nbsp;10MHz&amp;nbsp;이상)에서&amp;nbsp;인덕턴스처럼&amp;nbsp;동작하는&amp;nbsp;반면,&amp;nbsp;세라믹&amp;nbsp;또는&amp;nbsp;플라스틱&amp;nbsp;커패시터는&amp;nbsp;고주파수에서&amp;nbsp;용량성&amp;nbsp;동작을&amp;nbsp;유지합니다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;0.1&amp;mu;F&amp;nbsp;~&amp;nbsp;1&amp;mu;F의&amp;nbsp;세라믹&amp;nbsp;커패시턴스는&amp;nbsp;고주파에서&amp;nbsp;작동하는&amp;nbsp;중요&amp;nbsp;칩의&amp;nbsp;고주파&amp;nbsp;공급&amp;nbsp;디커플링으로&amp;nbsp;사용해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRGUbr/btsIrtTgz7r/e8ayWGFa5Gub0IxXFJtm21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRGUbr/btsIrtTgz7r/e8ayWGFa5Gub0IxXFJtm21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRGUbr/btsIrtTgz7r/e8ayWGFa5Gub0IxXFJtm21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRGUbr%2FbtsIrtTgz7r%2Fe8ayWGFa5Gub0IxXFJtm21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;759&quot; height=&quot;485&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;접지&amp;nbsp;연결&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #000000; text-align: start;&quot;&gt;외부 교란에 의해 유도되는 전류로 인해 디바이스 데이터시트에 명시된 절대 최대 정격 이상의 VSS 핀 간에 전압 차이가 발생할 위험을 줄이고 접지 복귀 경로의 임피던스를 줄이기 위해 가능한 한 짧은 경로로 모든 VSS 핀을 연결하는 것이 좋습니다.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;좋은&amp;nbsp;방법은&amp;nbsp;장치&amp;nbsp;VSS&amp;nbsp;핀에&amp;nbsp;최대한&amp;nbsp;가깝게&amp;nbsp;배치된&amp;nbsp;비아를&amp;nbsp;통해&amp;nbsp;VSS&amp;nbsp;라인을&amp;nbsp;접지면에&amp;nbsp;연결하는&amp;nbsp;것입니다.&amp;nbsp;접지면은&amp;nbsp;슬롯이나&amp;nbsp;구멍&amp;nbsp;없이&amp;nbsp;단단해야&amp;nbsp;하며,&amp;nbsp;이로&amp;nbsp;인해&amp;nbsp;접지면&amp;nbsp;임피던스가&amp;nbsp;증가할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;아날로그&amp;nbsp;접지와&amp;nbsp;디지털&amp;nbsp;접지를&amp;nbsp;분리하는&amp;nbsp;것은&amp;nbsp;권장되지&amp;nbsp;않습니다.&amp;nbsp;디지털-아날로그&amp;nbsp;영역의&amp;nbsp;노이즈&amp;nbsp;분포에&amp;nbsp;의심스러운&amp;nbsp;영향을&amp;nbsp;미칠&amp;nbsp;수&amp;nbsp;있지만&amp;nbsp;항상&amp;nbsp;EMC&amp;nbsp;성능이&amp;nbsp;더&amp;nbsp;나쁩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;I/O&amp;nbsp;구성&lt;/b&gt;&lt;br /&gt;핀이&amp;nbsp;플로팅된&amp;nbsp;디지털&amp;nbsp;입력&amp;nbsp;구성은&amp;nbsp;회로에&amp;nbsp;잠재적인&amp;nbsp;위험이&amp;nbsp;있습니다.&amp;nbsp;애플리케이션에&amp;nbsp;사용되지&amp;nbsp;않는&amp;nbsp;I/O&amp;nbsp;핀은&amp;nbsp;출력&amp;nbsp;푸시풀&amp;nbsp;로우&amp;nbsp;상태로&amp;nbsp;구성하는&amp;nbsp;것이&amp;nbsp;좋습니다.&amp;nbsp;이는&amp;nbsp;EMC&amp;nbsp;견고성을&amp;nbsp;증가시키거나&amp;nbsp;접지에&amp;nbsp;연결된&amp;nbsp;아날로그&amp;nbsp;입력으로&amp;nbsp;구성하여&amp;nbsp;전력&amp;nbsp;전류&amp;nbsp;소비를&amp;nbsp;줄입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;차폐&lt;/b&gt;&lt;br /&gt;차폐는 노이즈 민감도와 방출을 줄이는 데 도움이 됩니다. 그러나 실드로 선택한 재료에 따라 다릅니다.&lt;br /&gt;투자율이&amp;nbsp;높아야&amp;nbsp;하고&amp;nbsp;저항률이&amp;nbsp;낮아야&amp;nbsp;하며&amp;nbsp;안정적인&amp;nbsp;전압&amp;nbsp;소스에&amp;nbsp;연결되어야&amp;nbsp;합니다.&amp;nbsp;여기에는&amp;nbsp;낮은&amp;nbsp;직렬&amp;nbsp;임피던스(낮은&amp;nbsp;인덕턴스&amp;nbsp;또는&amp;nbsp;낮은&amp;nbsp;저항)&amp;nbsp;전압&amp;nbsp;소스를&amp;nbsp;통한&amp;nbsp;디커플링&amp;nbsp;커패시턴스가&amp;nbsp;포함됩니다.&lt;br /&gt;&lt;br /&gt;주요 방해 발생기가 MCU 보드 근처에 있고 강력한 dV/dt 발생기(즉, 변압기 또는 클라이스트론)로 식별되는 경우 잡음은 주로 정전기장에 의해 전달됩니다. 노이즈 발생기와 제어 보드 사이의 중요한 결합은 용량성입니다.&lt;br /&gt;&lt;br /&gt;전도성이&amp;nbsp;높은&amp;nbsp;차폐물,&amp;nbsp;즉&amp;nbsp;구리로&amp;nbsp;제어&amp;nbsp;보드&amp;nbsp;주위에&amp;nbsp;패러데이&amp;nbsp;케이지를&amp;nbsp;생성하면&amp;nbsp;내성이&amp;nbsp;크게&amp;nbsp;증가할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;강력한&amp;nbsp;교란&amp;nbsp;소스가&amp;nbsp;dI/dt&amp;nbsp;생성기(즉,&amp;nbsp;계전기)인&amp;nbsp;경우&amp;nbsp;이는&amp;nbsp;전자기장의&amp;nbsp;소스가&amp;nbsp;높습니다.&amp;nbsp;따라서&amp;nbsp;차폐재,&amp;nbsp;즉&amp;nbsp;합금의&amp;nbsp;투자율은&amp;nbsp;기판의&amp;nbsp;내성을&amp;nbsp;높이는&amp;nbsp;데&amp;nbsp;매우&amp;nbsp;중요합니다.&amp;nbsp;또한&amp;nbsp;실드의&amp;nbsp;구멍&amp;nbsp;수와&amp;nbsp;크기를&amp;nbsp;최대한&amp;nbsp;줄여&amp;nbsp;효율성을&amp;nbsp;높여야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;중요한&amp;nbsp;경우에는&amp;nbsp;MCU&amp;nbsp;아래에&amp;nbsp;접지면을&amp;nbsp;삽입하고&amp;nbsp;장치와&amp;nbsp;PCB&amp;nbsp;사이의&amp;nbsp;소켓을&amp;nbsp;제거하면&amp;nbsp;MCU&amp;nbsp;잡음&amp;nbsp;민감도를&amp;nbsp;줄일&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;실제로&amp;nbsp;두&amp;nbsp;가지&amp;nbsp;작업&amp;nbsp;모두&amp;nbsp;MCU,&amp;nbsp;공급&amp;nbsp;장치,&amp;nbsp;I/O&amp;nbsp;및&amp;nbsp;PCB&amp;nbsp;사이의&amp;nbsp;루프&amp;nbsp;표면이&amp;nbsp;줄어드는&amp;nbsp;결과를&amp;nbsp;가져옵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;I/O&amp;nbsp;bonding&amp;nbsp;coupling&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 어플리케이션에서는 PA3 핀에서 ESD 스트라이크가 발생하면 인접한 핀 PA2 및 PA4가 전류로 전달되는 전압 스파이크의 영향을 받을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br9Iqi/btsIsZQWimk/mfU81Vz21VVAcB1OIO1ol1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br9Iqi/btsIsZQWimk/mfU81Vz21VVAcB1OIO1ol1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br9Iqi/btsIsZQWimk/mfU81Vz21VVAcB1OIO1ol1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr9Iqi%2FbtsIsZQWimk%2FmfU81Vz21VVAcB1OIO1ol1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;545&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패키지&amp;nbsp;기술로&amp;nbsp;인해&amp;nbsp;칩&amp;nbsp;패드는&amp;nbsp;와이어&amp;nbsp;본딩을&amp;nbsp;통해&amp;nbsp;패키지&amp;nbsp;핀에&amp;nbsp;연결되며&amp;nbsp;인접한&amp;nbsp;핀&amp;nbsp;사이에&amp;nbsp;작은&amp;nbsp;용량성/유도성&amp;nbsp;결합이&amp;nbsp;생성됩니다.&lt;br /&gt;&lt;br /&gt;ESD&amp;nbsp;충격이&amp;nbsp;발생하면&amp;nbsp;방전&amp;nbsp;에너지는&amp;nbsp;커플링으로&amp;nbsp;인해&amp;nbsp;단일&amp;nbsp;핀뿐만&amp;nbsp;아니라&amp;nbsp;인접한&amp;nbsp;핀으로도&amp;nbsp;전달됩니다.&lt;br /&gt;&lt;br /&gt;공급&amp;nbsp;장치&amp;nbsp;또는&amp;nbsp;접지&amp;nbsp;핀&amp;nbsp;사이의&amp;nbsp;전압&amp;nbsp;변동이&amp;nbsp;절대&amp;nbsp;최대&amp;nbsp;정격보다&amp;nbsp;높은&amp;nbsp;과도&amp;nbsp;상태를&amp;nbsp;유발할&amp;nbsp;수&amp;nbsp;있습니다(제품&amp;nbsp;데이터시트&amp;nbsp;참조).&amp;nbsp;최종&amp;nbsp;결과적으로&amp;nbsp;STM32&amp;nbsp;제품&amp;nbsp;주변&amp;nbsp;장치&amp;nbsp;작동이&amp;nbsp;변경될&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;ESD&amp;nbsp;충격이&amp;nbsp;발생한&amp;nbsp;후&amp;nbsp;애플리케이션&amp;nbsp;기능을&amp;nbsp;확인하는&amp;nbsp;것이&amp;nbsp;중요합니다.&amp;nbsp;문제가&amp;nbsp;발생하면&amp;nbsp;식별된&amp;nbsp;진입점&amp;nbsp;핀&amp;nbsp;PA3의&amp;nbsp;ESD&amp;nbsp;보호를&amp;nbsp;개선하는&amp;nbsp;것이&amp;nbsp;좋습니다.&amp;nbsp;이는&amp;nbsp;ESD&amp;nbsp;결합&amp;nbsp;에너지를&amp;nbsp;감소시키고&amp;nbsp;양호한&amp;nbsp;애플리케이션&amp;nbsp;작동을&amp;nbsp;보장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고속&amp;nbsp;신호&amp;nbsp;트랙&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이크로&amp;nbsp;컨트롤러&amp;nbsp;기반&amp;nbsp;애플리케이션의&amp;nbsp;EMC&amp;nbsp;약점의&amp;nbsp;또&amp;nbsp;다른&amp;nbsp;원인은&amp;nbsp;고속&amp;nbsp;디지털&amp;nbsp;I/O&amp;nbsp;및&amp;nbsp;xSPI,&amp;nbsp;I&amp;sup2;C,&amp;nbsp;외부&amp;nbsp;메모리&amp;nbsp;인터페이스,&amp;nbsp;USB&amp;nbsp;또는&amp;nbsp;GPIO의&amp;nbsp;PWM과&amp;nbsp;같은&amp;nbsp;통신&amp;nbsp;인터페이스&amp;nbsp;때문일&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;고속 신호가 포함된 PCB를 설계할 때는 다음 EMC 고려 사항 목록을 고려해야 합니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;bull; Coupling/crosstalk:&lt;br /&gt;&amp;ndash;&amp;nbsp;신호가&amp;nbsp;다른&amp;nbsp;신호와&amp;nbsp;결합하고&amp;nbsp;간섭하여&amp;nbsp;침입&amp;nbsp;스파이크(데이터로&amp;nbsp;샘플링&amp;nbsp;가능)&amp;nbsp;및&amp;nbsp;타이밍&amp;nbsp;이동이&amp;nbsp;발생하는&amp;nbsp;경우.&lt;br /&gt;&lt;br /&gt;&amp;bull; Signal&amp;nbsp;reflection:&lt;br /&gt;&amp;ndash;&amp;nbsp;고속&amp;nbsp;신호는&amp;nbsp;신호&amp;nbsp;모양을&amp;nbsp;변경할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;임피던스&amp;nbsp;불일치에&amp;nbsp;취약합니다.&lt;br /&gt;&lt;br /&gt;&amp;bull; Clock&amp;nbsp;jitter:&lt;br /&gt;&amp;ndash;&amp;nbsp;외부&amp;nbsp;간섭이나&amp;nbsp;잡음으로&amp;nbsp;인해&amp;nbsp;클럭&amp;nbsp;에지&amp;nbsp;편차가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있으며&amp;nbsp;이로&amp;nbsp;인해&amp;nbsp;타이밍&amp;nbsp;허용&amp;nbsp;오차가&amp;nbsp;좁아지거나&amp;nbsp;통신&amp;nbsp;오류가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;&amp;bull; Potential&amp;nbsp;antennas:&lt;br /&gt;&amp;ndash;&amp;nbsp;PCB&amp;nbsp;가장자리에&amp;nbsp;가깝게&amp;nbsp;라우팅하거나&amp;nbsp;평면의&amp;nbsp;틈이&amp;nbsp;안테나&amp;nbsp;역할을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;&amp;bull; Certification&amp;nbsp;fails:&lt;br /&gt;&amp;ndash; 기능상 문제가 없더라도 해당 제품이 필수 인증에 실패할 수 있으며 PCB를 재설계해야 합니다. 이러한&amp;nbsp;문제를&amp;nbsp;방지하려면&amp;nbsp;개발&amp;nbsp;초기&amp;nbsp;단계부터&amp;nbsp;EMC&amp;nbsp;성능을&amp;nbsp;염두에&amp;nbsp;두고&amp;nbsp;계획을&amp;nbsp;세워야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;&amp;bull; Stack-up:&lt;br /&gt;&amp;ndash; EMI를 개선하기 위한 주요 고려 사항 중 하나는 외부 레이어(상단 및 하단)가 신호용이고 내부 레이어가 GND 및 전원 평면용인 4개 이상의 레이어 PCB를 사용하는 것입니다. 솔리드 평면은 상단과 하단의 신호 임피던스를 제어하는 ​​데 도움이 되며 함께(GND 및 PWR 평면) 스택업 커패시턴스를 생성하여 더 높은 주파수에서 성능을 향상시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;ndash; 특히 특정한 노이즈 신호가 있는 경우 두 개의 솔리드 PWR/GND 평면 사이에 라우팅하여 방출을 줄일 수 있지만 8개 이상의 레이어 스택업이 필요합니다.&lt;br /&gt;&lt;br /&gt;&amp;ndash; 솔리드 평면에&amp;nbsp;틈이&amp;nbsp;생기지&amp;nbsp;않도록&amp;nbsp;하십시오.&amp;nbsp;이러한&amp;nbsp;틈은&amp;nbsp;안테나&amp;nbsp;역할을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;라우팅&amp;nbsp;팁&amp;nbsp;및&amp;nbsp;권장사항:&lt;br /&gt;&amp;ndash;&amp;nbsp;고속&amp;nbsp;신호가&amp;nbsp;비아를&amp;nbsp;통과해야&amp;nbsp;하는&amp;nbsp;경우(임피던스&amp;nbsp;불일치로&amp;nbsp;표시되므로&amp;nbsp;고속&amp;nbsp;신호에는&amp;nbsp;권장되지&amp;nbsp;않음)&amp;nbsp;반환&amp;nbsp;경로&amp;nbsp;루프는&amp;nbsp;최소&amp;nbsp;루프&amp;nbsp;영역을&amp;nbsp;유지해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;&amp;ndash;&amp;nbsp;절대&amp;nbsp;평면&amp;nbsp;틈&amp;nbsp;위로&amp;nbsp;배선하지&amp;nbsp;말고,&amp;nbsp;부득이한&amp;nbsp;경우에는&amp;nbsp;스티칭&amp;nbsp;캡을&amp;nbsp;사용하십시오.&lt;br /&gt;&lt;br /&gt;&amp;ndash; 커플링 문제를 방지하려면 노이즈 신호에 대한 장거리 병렬 라우팅을 피하십시오.&lt;br /&gt;&lt;br /&gt;&amp;ndash;&amp;nbsp;매우&amp;nbsp;긴&amp;nbsp;트랙(&amp;gt;30cm)&amp;nbsp;및&amp;nbsp;매우&amp;nbsp;빠른&amp;nbsp;신호(&amp;gt;50MHz)의&amp;nbsp;경우&amp;nbsp;종단&amp;nbsp;저항을&amp;nbsp;추가하여&amp;nbsp;신호&amp;nbsp;반사를&amp;nbsp;줄일&amp;nbsp;수&amp;nbsp;있습니다(저항&amp;nbsp;범위&amp;nbsp;30&amp;Omega;&amp;nbsp;~&amp;nbsp;50&amp;Omega;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ESD&amp;nbsp;보호를&amp;nbsp;위한&amp;nbsp;취급&amp;nbsp;주의&amp;nbsp;사항&lt;/b&gt;&lt;br /&gt;ESD&amp;nbsp;손상에&amp;nbsp;대한&amp;nbsp;마이크로컨트롤러&amp;nbsp;장치의&amp;nbsp;민감성을&amp;nbsp;확인하려면&amp;nbsp;애플리케이션&amp;nbsp;노트&amp;nbsp;정전기&amp;nbsp;방전&amp;nbsp;감도&amp;nbsp;측정(&lt;b&gt;AN1181&lt;/b&gt;)을&amp;nbsp;참조하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;펌웨어&lt;/b&gt;&lt;br /&gt;이&amp;nbsp;섹션은&amp;nbsp;&lt;a href=&quot;http://www.st.com에서&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.st.com에서&lt;/a&gt;&amp;nbsp;제공되는&amp;nbsp;마이크로컨트롤러&amp;nbsp;EMC&amp;nbsp;성능&amp;nbsp;향상을&amp;nbsp;위한&amp;nbsp;소프트웨어&amp;nbsp;기술(&lt;b&gt;AN1015&lt;/b&gt;)&amp;nbsp;애플리케이션&amp;nbsp;노트에&amp;nbsp;자세히&amp;nbsp;설명되어&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;끝&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>▶ STM32/회로리뷰</category>
      <category>EMC</category>
      <category>Emi</category>
      <category>EMS</category>
      <category>ESD</category>
      <category>PCB설계</category>
      <category>STM32</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/232</guid>
      <comments>https://cpattern.tistory.com/232#entry232comment</comments>
      <pubDate>Mon, 8 Jul 2024 21:32:36 +0900</pubDate>
    </item>
    <item>
      <title>STM, 자체 기술로 AI 지원 제품 개발 가속화하는ST 엣지 AI 스위트 출시</title>
      <link>https://cpattern.tistory.com/231</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfxvy3/btsIfqIOm1X/XNV7w5GhVWN9hac5btf040/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfxvy3/btsIfqIOm1X/XNV7w5GhVWN9hac5btf040/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfxvy3/btsIfqIOm1X/XNV7w5GhVWN9hac5btf040/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdfxvy3%2FbtsIfqIOm1X%2FXNV7w5GhVWN9hac5btf040%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;287&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ST는 엣지 AI 애플리케이션 구현을 간소화 및 가속화하도록 툴, 소프트웨어, 전문지식을 결합한 ST 엣지 AI 스위트(ST Edge AI Suite)를 제공한다고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트는&amp;nbsp;통합&amp;nbsp;소프트웨어&amp;nbsp;툴&amp;nbsp;모음으로서&amp;nbsp;임베디드&amp;nbsp;AI&amp;nbsp;애플리케이션의&amp;nbsp;개발과&amp;nbsp;구축을&amp;nbsp;용이하게&amp;nbsp;하도록&amp;nbsp;설계됐다.&amp;nbsp;이&amp;nbsp;포괄적인&amp;nbsp;제품군은&amp;nbsp;데이터&amp;nbsp;수집부터&amp;nbsp;하드웨어&amp;nbsp;상의&amp;nbsp;최종&amp;nbsp;구축까지&amp;nbsp;머신&amp;nbsp;러닝&amp;nbsp;알고리즘의&amp;nbsp;최적화&amp;nbsp;및&amp;nbsp;구축을&amp;nbsp;모두&amp;nbsp;지원하면서&amp;nbsp;다양한&amp;nbsp;유형의&amp;nbsp;사용자들을&amp;nbsp;위해&amp;nbsp;워크플로를&amp;nbsp;간소화해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이&amp;nbsp;스위트의&amp;nbsp;툴로는&amp;nbsp;스마트&amp;nbsp;센서부터&amp;nbsp;곧&amp;nbsp;출시&amp;nbsp;예정인&amp;nbsp;STM32N6&amp;nbsp;신경망&amp;nbsp;프로세싱&amp;nbsp;마이크로컨트롤러를&amp;nbsp;비롯한&amp;nbsp;마이크로컨트롤러&amp;nbsp;및&amp;nbsp;마이크로프로세서&amp;nbsp;등&amp;nbsp;ST&amp;nbsp;제품이&amp;nbsp;광범위하게&amp;nbsp;포함돼&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST 수석 부사장 알렉산드로 크레모네시(Alessandro Cremonesi)는 &amp;ldquo;ST 엣지 AI 스위트는 st.com에서 제공되는 임베디드 AI 개발을 위한 새로운 출발점이다. 상상력을 발휘하고자 하는 오늘날의 혁신가들은 지능적이고 자율적이며 효율적으로 세상을 감지하고, 추론 및 대응이 가능한 미래의 스마트 사물을 실현하는 데 도움을 얻을 수 있다&amp;rdquo;며, &amp;ldquo;이러한 단일 통합 프레임워크 환경을 통해 개발자들은 모델과 데이터 소스를 쉽게 선택하고, 빠르고 간단하게 적합한 툴을 찾아 최적화 및 벤치마킹을 수행한 다음, 코드와 라이브러리를 자동으로 생성할 수 있다&amp;rdquo;고 말했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트는&amp;nbsp;다중&amp;nbsp;하드웨어&amp;nbsp;플랫폼&amp;nbsp;전반에&amp;nbsp;걸쳐&amp;nbsp;데이터&amp;nbsp;과학자,&amp;nbsp;임베디드&amp;nbsp;소프트웨어&amp;nbsp;개발자,&amp;nbsp;하드웨어&amp;nbsp;시스템&amp;nbsp;엔지니어&amp;nbsp;등&amp;nbsp;다양한&amp;nbsp;유형의&amp;nbsp;사용자&amp;nbsp;요구를&amp;nbsp;충족할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;선택한&amp;nbsp;하드웨어&amp;nbsp;플랫폼에서&amp;nbsp;데이터&amp;nbsp;튜닝&amp;nbsp;및&amp;nbsp;모델&amp;nbsp;최적화를&amp;nbsp;위한&amp;nbsp;데스크톱&amp;nbsp;툴은&amp;nbsp;물론,&amp;nbsp;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;모델&amp;nbsp;주(Model&amp;nbsp;Zoo)&amp;nbsp;및&amp;nbsp;개발자&amp;nbsp;클라우드(Developer&amp;nbsp;Cloud)와&amp;nbsp;같은&amp;nbsp;온라인&amp;nbsp;툴에도&amp;nbsp;간편하게&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;머신&amp;nbsp;러닝&amp;nbsp;라이브러리를&amp;nbsp;자동으로&amp;nbsp;생성하는&amp;nbsp;나노엣지&amp;nbsp;AI&amp;nbsp;스튜디오(NanoEdge&amp;nbsp;AI&amp;nbsp;Studio),&amp;nbsp;STM32&amp;nbsp;디바이스,&amp;nbsp;MEMS&amp;nbsp;관성&amp;nbsp;센서,&amp;nbsp;스텔라&amp;nbsp;프로세서에서&amp;nbsp;모델을&amp;nbsp;최적화하는&amp;nbsp;STM32Cube.AI,&amp;nbsp;MEMS&amp;nbsp;스튜디오,&amp;nbsp;스텔라&amp;nbsp;스튜디오(Stellar&amp;nbsp;Studio)도&amp;nbsp;포함돼&amp;nbsp;있다.&amp;nbsp;이&amp;nbsp;모든&amp;nbsp;솔루션은&amp;nbsp;무료로&amp;nbsp;이용할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이번&amp;nbsp;스위트&amp;nbsp;출시로&amp;nbsp;MEMS&amp;nbsp;스튜디오&amp;nbsp;툴에서&amp;nbsp;AI&amp;nbsp;애플리케이션을&amp;nbsp;지원하는&amp;nbsp;세계&amp;nbsp;최초의&amp;nbsp;혁신&amp;nbsp;기술인&amp;nbsp;&amp;lsquo;ISPU&amp;nbsp;NN&amp;nbsp;모델&amp;nbsp;옵티마이저&amp;rsquo;와&amp;nbsp;&amp;lsquo;MLC&amp;nbsp;기능&amp;nbsp;및&amp;nbsp;필터&amp;nbsp;자동&amp;nbsp;선택&amp;rsquo;&amp;nbsp;기능도&amp;nbsp;도입할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;된다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고객사들 반응:&lt;/b&gt; &lt;br /&gt;하니웰(Honeywell),&amp;nbsp;소사이(Soxai),&amp;nbsp;HPE&amp;nbsp;그룹(HPE&amp;nbsp;Group)의&amp;nbsp;적용&amp;nbsp;사례는&amp;nbsp;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트의&amp;nbsp;MEMS&amp;nbsp;스튜디오&amp;nbsp;및&amp;nbsp;스텔라&amp;nbsp;스튜디오와&amp;nbsp;같은&amp;nbsp;툴이&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;개발을&amp;nbsp;간소화&amp;nbsp;및&amp;nbsp;가속화하는&amp;nbsp;데&amp;nbsp;어떻게&amp;nbsp;도움이&amp;nbsp;되는지&amp;nbsp;보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;하니웰&amp;nbsp;방재&amp;nbsp;사업부&amp;nbsp;펌웨어&amp;nbsp;설계&amp;nbsp;및&amp;nbsp;임베디드&amp;nbsp;시스템&amp;nbsp;엔지니어인&amp;nbsp;이스라엘&amp;nbsp;에레라(Israel&amp;nbsp;Herrera)는&amp;nbsp;&amp;ldquo;ST는&amp;nbsp;센서를&amp;nbsp;통해&amp;nbsp;엣지&amp;nbsp;컴퓨팅&amp;nbsp;분야의&amp;nbsp;혁신적인&amp;nbsp;발전을&amp;nbsp;선도하고&amp;nbsp;있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트에&amp;nbsp;포함된&amp;nbsp;MEMS&amp;nbsp;스튜디오는&amp;nbsp;ST의&amp;nbsp;다양한&amp;nbsp;MEMS&amp;nbsp;센서&amp;nbsp;모듈을&amp;nbsp;이용해&amp;nbsp;신속하게&amp;nbsp;테스트를&amp;nbsp;수행하게&amp;nbsp;해주는&amp;nbsp;뛰어난&amp;nbsp;소프트웨어&amp;nbsp;개발&amp;nbsp;툴임이&amp;nbsp;입증되었다.&amp;nbsp;코드&amp;nbsp;생성&amp;nbsp;기능을&amp;nbsp;통해&amp;nbsp;손쉽게&amp;nbsp;개념증명이&amp;nbsp;가능하다.&amp;nbsp;다양하고&amp;nbsp;독립적인&amp;nbsp;머신러닝과&amp;nbsp;데이터&amp;nbsp;분석&amp;nbsp;알고리즘&amp;nbsp;테스트에도&amp;nbsp;매우&amp;nbsp;유용하다&amp;rdquo;고&amp;nbsp;밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST의&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;센서를&amp;nbsp;이용하고&amp;nbsp;있는&amp;nbsp;소사이의&amp;nbsp;창업자이자&amp;nbsp;CEO인&amp;nbsp;타츠히코&amp;nbsp;와타나베(Tatsuhiko&amp;nbsp;Watanabe)는&amp;nbsp;&amp;ldquo;소사이&amp;nbsp;링&amp;nbsp;1(SOXAI&amp;nbsp;RING&amp;nbsp;1)을&amp;nbsp;개발하던&amp;nbsp;중,&amp;nbsp;ST가&amp;nbsp;세계&amp;nbsp;최초로&amp;nbsp;엣지&amp;nbsp;AI를&amp;nbsp;탑재한&amp;nbsp;센서를&amp;nbsp;출시했고,&amp;nbsp;소사이는&amp;nbsp;제품&amp;nbsp;성능을&amp;nbsp;높이기&amp;nbsp;위해&amp;nbsp;이를&amp;nbsp;신속하게&amp;nbsp;채택했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트에&amp;nbsp;포함된&amp;nbsp;머신러닝&amp;nbsp;코어&amp;nbsp;소프트웨어&amp;nbsp;툴은&amp;nbsp;이&amp;nbsp;새로운&amp;nbsp;기술을&amp;nbsp;신속하게&amp;nbsp;통합하게&amp;nbsp;해주며,&amp;nbsp;개발자들은&amp;nbsp;최소한의&amp;nbsp;노력으로&amp;nbsp;센서의&amp;nbsp;잠재력을&amp;nbsp;최대한&amp;nbsp;활용할&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;새로운&amp;nbsp;소사이&amp;nbsp;링&amp;nbsp;1은&amp;nbsp;1세대에&amp;nbsp;비해&amp;nbsp;최소&amp;nbsp;10시간의&amp;nbsp;긴&amp;nbsp;배터리&amp;nbsp;수명을&amp;nbsp;제공함으로써&amp;nbsp;웨어러블&amp;nbsp;기술&amp;nbsp;분야를&amp;nbsp;완전히&amp;nbsp;혁신하고&amp;nbsp;있다&amp;rdquo;고&amp;nbsp;말했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;HPE&amp;nbsp;그룹의&amp;nbsp;CEO인&amp;nbsp;안드레아&amp;nbsp;보졸리(Andrea&amp;nbsp;Bozzoli)는&amp;nbsp;&amp;ldquo;HPE는&amp;nbsp;ST와의&amp;nbsp;협력으로&amp;nbsp;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트에&amp;nbsp;속하는&amp;nbsp;스텔라&amp;nbsp;MCU&amp;nbsp;및&amp;nbsp;스텔라&amp;nbsp;스튜디오&amp;nbsp;소프트웨어를&amp;nbsp;활용하면서&amp;nbsp;자동차&amp;nbsp;분야의&amp;nbsp;혁신을&amp;nbsp;선도하고&amp;nbsp;있다.&amp;nbsp;양사는&amp;nbsp;프로메테우스&amp;nbsp;공동&amp;nbsp;혁신&amp;nbsp;연구소(Prometeo&amp;nbsp;Joint&amp;nbsp;Innovation&amp;nbsp;Lab)를&amp;nbsp;통해&amp;nbsp;차세대&amp;nbsp;차량의&amp;nbsp;파워트레인에&amp;nbsp;대한&amp;nbsp;개념증명을&amp;nbsp;수행하는&amp;nbsp;것은&amp;nbsp;물론,&amp;nbsp;AI를&amp;nbsp;활용해&amp;nbsp;예측&amp;nbsp;유지보수와&amp;nbsp;제어&amp;nbsp;시스템을&amp;nbsp;개선하고자&amp;nbsp;한다.&amp;nbsp;이러한&amp;nbsp;시너지로&amp;nbsp;전기차&amp;nbsp;성능을&amp;nbsp;향상시킬&amp;nbsp;뿐만&amp;nbsp;아니라&amp;nbsp;디지털&amp;nbsp;콕핏에&amp;nbsp;대한&amp;nbsp;풍부한&amp;nbsp;경험과&amp;nbsp;스마트하고&amp;nbsp;지속가능한&amp;nbsp;모빌리티의&amp;nbsp;새로운&amp;nbsp;기준을&amp;nbsp;제시할&amp;nbsp;것이다&amp;rdquo;라고&amp;nbsp;말했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;스위트는&amp;nbsp;현재&amp;nbsp;&lt;a href=&quot;https://www.st.com/content/st_com/en/st-edge-ai-suite.html에서&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.st.com/content/st_com/en/st-edge-ai-suite.html에서&lt;/a&gt;&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있다. &lt;/p&gt;</description>
      <category>▶ STM32/News</category>
      <category>Ai</category>
      <category>nanoedge ai</category>
      <category>STM32</category>
      <category>stm32n6</category>
      <category>ST마이크로일렉트로닉스</category>
      <category>엣지AI</category>
      <category>인공신경망</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/231</guid>
      <comments>https://cpattern.tistory.com/231#entry231comment</comments>
      <pubDate>Fri, 28 Jun 2024 19:40:45 +0900</pubDate>
    </item>
    <item>
      <title>GPDMA 설정 및 예제</title>
      <link>https://cpattern.tistory.com/230</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;STM32U, STM32H 시리즈부터 GPDMA(General Purposes DMA)가 기본 DMA로 들어가 있습니다. 따라서 앞으로 출시되는 ST MCU에서는 GPDMA가 필수적은 DMA 시스템이 될 가능성이 높습니다. DMA를 사용하셨던 분들이나 앞으로 사용하실 분들은 GPDMA에 대해 &lt;b&gt;필수적&lt;/b&gt;으로 알아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPDMA의 핵심은 Linked-list를 통해 다중 블록전송이 가능해졌다는 것입니다. 실례로 I2C로 받은 데이터를 UART를 통해 소프트웨어 개입없이 송출하는게 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 번역은 ST Employee 가 작성한 &quot;How to configure the GPDMA?&quot; 포스트를 번역해 놓은 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 id=&quot;toc-hId-477151183&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;GPDMA를 구성하는 방법은 무엇입니까?&lt;/h1&gt;
&lt;h2 id=&quot;toc-hId--442799599&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;1. GPDMA 모듈 설정&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;STM32U5와 같이 시리즈로 제공되는 새로운 DMA 모듈(GPDMA 및 LPDMA 포함)은 일반 DMA와 약간 다릅니다. 이 글에서는 대부분의 STM32 시리즈에서 사용할 수 있는 표준 DMA와 유사한 방식으로 GPDMA를 사용하기 위한 설정에 대해 설명합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;toc-hId-444704082&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;2. 애플리케이션의 이점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;모든 애플리케이션에서 DMA를 사용하는 주요 이점은 메모리 매핑 소스(Source)에서 메모리 매핑 대상(Destination)으로의 데이터 전송을 위해 CPU의 부하를 오프로드한다는 것입니다. 아래 이미지에서 GPDMA 및 LPDMA와 관련된 전력 도메인을 볼 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwbZf/btsG6ilTiqt/NtklozEJ6UZqRkVAQddo2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwbZf/btsG6ilTiqt/NtklozEJ6UZqRkVAQddo2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwbZf/btsG6ilTiqt/NtklozEJ6UZqRkVAQddo2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwbZf%2FbtsG6ilTiqt%2FNtklozEJ6UZqRkVAQddo2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;480&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;위 이미지에서 볼 수 있듯이 GPDMA에는 2개의 포트가 제공됩니다. AHB 매트릭스 외부에 APB 주변 장치에 대한 직접적인 하드웨어 데이터 경로가 있으므로 일반적으로 주변 장치와의 전송을 위해 &lt;b&gt;Port0&lt;/b&gt;을 할당해야 합니다. 반면에 &lt;b&gt;Port1&lt;/b&gt;은 일반적으로 메모리와의 전송을 위해 할당되어야 합니다. 어떤 경우든 GPDMA 대상은 모든 포트에서 주소를 지정할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;고려해야 할 또 다른 흥미로운 요소는 각 채널에 FIFO 크기가 있고 다음 규칙을 따른다는 것입니다. 채널0에서 채널 11까지의 FIFO는 8바이트(2워드)입니다. SRAM(예: UART)을 버퍼로. 채널 12~15에는 32바이트(8워드) FIFO가 있으므로 고속 AHB 주변 장치와 SRAM 간 전송 또는 외부 메모리와의 전송에 더 적합합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;자, 이제 기본 사항을 익혔으니 실제 프로젝트에 들어가 어떻게 진행되는지 살펴보겠습니다. 이 부분에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html&quot;&gt;NUCLEO-U575ZI-Q 와 함께&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://www.st.com/en/development-tools/stm32cubeide.html&quot;&gt;STM32CubeIDE&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(v1.10.1) 를&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용&lt;span&gt;&amp;nbsp;&lt;/span&gt;하지만 이 코드는 GPDMA가 있는 모든 STM32 시리즈로 쉽게 이식될 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;toc-hId-1332207763&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;3. 새 프로젝트 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;지정된 보드를 시작점으로(Board Default peripheral setting) 사용하여 새 프로젝트를 생성하면 직렬 포트, LED, 키 및 USB를 포함하여 이 보드에 핀이 자동으로 할당됩니다. 보드를 사용하여 처음부터 프로젝트를 생성하는 방법에 대해 의문이 있는 경우 이 정보가 포함된 여러 기사가 있지만&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://community.st.com/s/article/how-to-create-a-thread-using-azurertos-and-stm32cubeide&quot;&gt;여기에&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;해당 목적으로 사용할 수 있는 글이 있습니다(최종 5단계). &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;이 글의 내용을 가지고 실습을 할 경우 특정한 GPDMA가 있는 보드를 선택하는 것을 잊지 마세요. 이 데모에서는 UART에만 관심이 있으므로 나머지 부분은 무시하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;생성된 *.ioc에서 &quot;Connectivity&quot; 섹션을 찾아 확장하여 VCOM에 연결된 USART1을 선택할 수 있습니다. 여기서는 USART에 대해 상당히 일반적인 설정인 115200/8/N/1을 사용합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;999&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mUghr/btsG8TydgXy/cKxRdhIzxU3ldAnqhti1UK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mUghr/btsG8TydgXy/cKxRdhIzxU3ldAnqhti1UK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mUghr/btsG8TydgXy/cKxRdhIzxU3ldAnqhti1UK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmUghr%2FbtsG8TydgXy%2FcKxRdhIzxU3ldAnqhti1UK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;999&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;999&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&quot;toc-hId--2075255852&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;4. GPDMA 설정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;이제 우리가 정말로 상호 작용하고 싶은 부분은 GPDMA입니다. &quot;DMA 설정&quot; 탭을 클릭하면 GPDMA1로 이동하라는 메시지가 표시됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RX25q/btsG9byAYc1/vHZGlVaA555yHaxu4UkZck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RX25q/btsG9byAYc1/vHZGlVaA555yHaxu4UkZck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RX25q/btsG9byAYc1/vHZGlVaA555yHaxu4UkZck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRX25q%2FbtsG9byAYc1%2FvHZGlVaA555yHaxu4UkZck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;322&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;GPDMA 채널 선택을 위한 이전 지침에 따라 채널 10과 11을 모두 2워드 FIFO로 할당하고 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Standard Request Mode&lt;/b&gt;&lt;/span&gt; 설정하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;603&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8XcqT/btsG9x2wF4z/5XqyxxD4mKDO6jv0K6mt8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8XcqT/btsG9x2wF4z/5XqyxxD4mKDO6jv0K6mt8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8XcqT/btsG9x2wF4z/5XqyxxD4mKDO6jv0K6mt8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8XcqT%2FbtsG9x2wF4z%2F5XqyxxD4mKDO6jv0K6mt8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;603&quot; height=&quot;281&quot; data-origin-width=&quot;603&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;드롭 목록 옵션에서 알 수 있듯이 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Standard Request Mode&lt;/b&gt;&lt;/span&gt; 와 &lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Linked List Mode&lt;/span&gt;&lt;/b&gt;의 두 가지 선택이 가능합니다. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;Linked List Mode&lt;/span&gt;&lt;/b&gt; 에 대해 더 자세히 알고 싶고 이를 사용하는 이유는 다음 설명을 참조하세요. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;ARM&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://developer.arm.com/documentation/ka001774/latest&quot;&gt;문서&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;ldquo;Linked list은 List의 다음 요소에 대한 포인터를 포함하는 요소 목록입니다. 이는 요소를 메모리의 어느 곳에나 배치할 수 있고 주변 요소에 영향을 주지 않고 개별적으로 생성 및 제거할 수 있음을 의미합니다. 메모리에 알 수 없는 크기의 배열을 만드는 데 사용할 수 있습니다.&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Linked list은 DMA 컨트롤러에서 DMACCxLLI 레지스터를 통해 분산/수집을 지원하는 데 사용됩니다. 이는 소스 및 대상 영역이 메모리에서 인접한 영역을 차지할 필요가 없음을 의미합니다. 분산/수집이 필요하지 않은 경우 DMACCxLLI 레지스터를 0으로 설정해야 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;소스 및 대상 데이터 영역은 일련의 연결된 목록으로 정의되며 각 LLI는 한 데이터 블록의 전송을 제어한 다음 선택적으로 추가 LLI를 로드하여 DMA 작업을 계속하거나 DMA 스트림을 중지합니다. 기술 참조 매뉴얼의 부록 C에 예가 나와 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;DMACCxConfiguration DMA 채널 구성 레지스터는 연결 목록 항목의 일부가 아니며 새 LLI가 요청될 때 구성 레지스터가 업데이트되지 않습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;또한 DMA 채널이 활성화된 상태에서 DMACCxLLI 레지스터를 프로그래밍하면 예측할 수 없는 부작용이 발생한다는 점에 유의하십시오.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;DMA 컨트롤러의 LLI는 소스(Source) 주소, 대상(Destination) 주소, LLI 레지스터 및 제어 레지스터를 순서대로 포함하는 4개의 단어로 구성됩니다. 일부 시스템의 경우 LLI 데이터 구조를 4단어로 정렬하여 LLI 로드를 보다 효율적으로 만들 수 있고 만들어야 합니다. 분산(Scatter)/수집(Gather)을 위해 PL080을 프로그래밍하는 방법에 대한 정보는 Technical Reference Manual의 3-35페이지에 있는 섹션 3.6에 나와 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;toc-hId--1187752171&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;5. USART TX 및 USART RX 구성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;이제 차이점이 분명해졌으므로 2개의 채널을 구성해 보겠습니다. 하나는 USART TX에 사용되고 다른 하나는 USART RX에 사용됩니다. 두 포트가 모두 동일한 주변 장치와 작동한다는 것을 보여주기 위해 TX는 Port0을 사용하고 RX는 Port1을 사용합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;TX에 대한 구성은 다음과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9GSds/btsG75lRTLS/qgYWpwoX3UTEFOQH6Jfm2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9GSds/btsG75lRTLS/qgYWpwoX3UTEFOQH6Jfm2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9GSds/btsG75lRTLS/qgYWpwoX3UTEFOQH6Jfm2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9GSds%2FbtsG75lRTLS%2FqgYWpwoX3UTEFOQH6Jfm2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;712&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;RX 구성은 다음과 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yyt0i/btsG9AStJ6J/kWJfqYyQNOlQLgUakeOUrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yyt0i/btsG9AStJ6J/kWJfqYyQNOlQLgUakeOUrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yyt0i/btsG9AStJ6J/kWJfqYyQNOlQLgUakeOUrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyyt0i%2FbtsG9AStJ6J%2FkWJfqYyQNOlQLgUakeOUrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;757&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;이것이 필요한 모든 단계였으므로 이제 코드를 생성할 수 있습니다(Alt+K).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;main.c 파일에서 2개의 전역 버퍼를 만듭니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot; style=&quot;background-color: #f5f5f5; color: #3e3e3e; text-align: left;&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;/* USER CODE BEGIN PV */
uint8_t pRxBuff[10];
uint8_t pTxBuff[10] = &quot;Count:  \r\n&quot;;
/* USER CODE END PV */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;메인 함수의 무한 루프 앞에 수신 호출과 메인 루프에서 0..9부터 계산하는 데 사용할 로컬 변수를 추가한 다음 다시 시작합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot; style=&quot;background-color: #f5f5f5; color: #3e3e3e; text-align: left;&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_DMA(&amp;amp;huart1, pRxBuff, 10);
  uint8_t u8Inc = 0x30; // 0x30 =&amp;gt; &amp;lsquo;0&amp;rsquo; ASCII
  /* USER CODE END 2 */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;무한 루프 내에서 5초마다 동일한 메시지를 전송해 보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot; style=&quot;background-color: #f5f5f5; color: #3e3e3e; text-align: left;&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;/* USER CODE BEGIN 3 */
		pTxBuff[7] = u8Inc++;
		if(u8Inc &amp;gt; 0x39){
			u8Inc = 0x30;
		}
		HAL_UART_Transmit_DMA(&amp;amp;huart1, pTxBuff, 10);	  
        HAL_Delay(5000);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;마지막으로 10바이트가 수신될 때마다 에코되도록 수신 완료 콜백을 생성합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;cpp&quot; style=&quot;background-color: #f5f5f5; color: #3e3e3e; text-align: left;&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	HAL_UART_Transmit_DMA(&amp;amp;huart1,(uint8_t *) &quot;Message Received!\r\n&quot;, sizeof(&quot;Message Received!\r\n&quot;));
	HAL_UART_Receive_DMA(&amp;amp;huart1, pRxBuff, 10);
}
/* USER CODE END 4 */&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;toc-hId--300248490&quot; style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;6. 데모 코드 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;다음은 'Hello ST!!'라고 입력된 메시지를 볼 수 있는 코드 흐름에 대한 간단한 데모입니다. pRxBuff 및 pTxBuff의 메시지를 변경하는 데 사용되는 로컬 변수:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;591&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnwXVv/btsG96wQbaF/agJre2ZV7tkHFmIzvAspO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnwXVv/btsG96wQbaF/agJre2ZV7tkHFmIzvAspO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnwXVv/btsG96wQbaF/agJre2ZV7tkHFmIzvAspO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnwXVv%2FbtsG96wQbaF%2FagJre2ZV7tkHFmIzvAspO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;591&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;591&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #525a63; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;참고로, 혹시 모를 경우를 대비해 STM32CubeIDE를 터미널 기능과 함께 사용하여 위의 데모에서 사용한 데이터를 보내고 받을 수 있습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://community.st.com/s/article/how-to-use-the-stm32cubeide-terminal-to-send-and-receive-data&quot;&gt;이&lt;/a&gt;&lt;span&gt; 글&lt;/span&gt;&amp;nbsp;에서 수행 방법을 확인할 수&lt;span&gt;&amp;nbsp;&lt;/span&gt;있으며, IDE를 어두운 테마로 사용자 정의하려는 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #03234b;&quot; href=&quot;https://community.st.com/s/article/how-to-change-stm32cubeide-to-dark-theme&quot;&gt;이&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다른 기사를 확인하세요.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #525a63;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;참조 : &lt;a href=&quot;https://community.st.com/t5/stm32-mcus/how-to-configure-the-gpdma/ta-p/49412&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://community.st.com/t5/stm32-mcus/how-to-configure-the-gpdma/ta-p/49412&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.infineon.com/dgdl/Infineon-IP_GPDMA_XMC4-TR-v01_01-EN.pdf?fileId=5546d4624ad04ef9014b0780d1fb2266&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.infineon.com/dgdl/Infineon-IP_GPDMA_XMC4-TR-v01_01-EN.pdf?fileId=5546d4624ad04ef9014b0780d1fb2266&lt;/a&gt;&lt;/p&gt;</description>
      <category>▶ STM32/Peripheral</category>
      <category>CubeIDE</category>
      <category>DMA</category>
      <category>gpdma</category>
      <category>STM32</category>
      <category>stm32h</category>
      <category>stm32h5</category>
      <category>stm32u</category>
      <category>UART</category>
      <category>USART</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/230</guid>
      <comments>https://cpattern.tistory.com/230#entry230comment</comments>
      <pubDate>Fri, 3 May 2024 11:41:12 +0900</pubDate>
    </item>
    <item>
      <title>ARM Cortex-M4 어셈블리 명령어</title>
      <link>https://cpattern.tistory.com/229</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;일반 데이터 처리 명령어&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;MOV&lt;/b&gt; : 데이터를 레지스터로 이동시키는 명령, 1cycle 소요&lt;/p&gt;
&lt;pre id=&quot;code_1713163457014&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MOV &amp;lt;Rd&amp;gt;, #imm    //&amp;lt;Rd&amp;gt; = #imm
MOV R0, #5    //R0 = 5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계속 업데이트 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>▶ ARM Core</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/229</guid>
      <comments>https://cpattern.tistory.com/229#entry229comment</comments>
      <pubDate>Mon, 15 Apr 2024 15:48:39 +0900</pubDate>
    </item>
    <item>
      <title>ST, 파나소닉 사이클 테크놀로지의 전기 보조 자전거 ST edge AI 도입 지원</title>
      <link>https://cpattern.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 생활 제품에도 확대되기 시작한걸까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;315&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd6Kv1/btsGskiMTxi/uyssNCyckJ3s0B20bPxxwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd6Kv1/btsGskiMTxi/uyssNCyckJ3s0B20bPxxwK/img.png&quot; data-alt=&quot;새로운 타이어 공기압 모니터링 시스템&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd6Kv1/btsGskiMTxi/uyssNCyckJ3s0B20bPxxwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd6Kv1%2FbtsGskiMTxi%2FuyssNCyckJ3s0B20bPxxwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;315&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;315&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;새로운 타이어 공기압 모니터링 시스템&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한&amp;nbsp;전자&amp;nbsp;애플리케이션과&amp;nbsp;고객들을&amp;nbsp;지원하는&amp;nbsp;세계적인&amp;nbsp;반도체&amp;nbsp;회사인&amp;nbsp;ST마이크로일렉트로닉스(STMicroelectronics,&amp;nbsp;이하&amp;nbsp;ST)는&amp;nbsp;파나소닉&amp;nbsp;사이클&amp;nbsp;테크놀로지(Panasonic&amp;nbsp;Cycle&amp;nbsp;Technology,&amp;nbsp;이하&amp;nbsp;파나소닉)가&amp;nbsp;자사의&amp;nbsp;티모&amp;nbsp;A(TiMO&amp;nbsp;A)&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거에&amp;nbsp;STM32F3&amp;nbsp;마이크로컨트롤러(MCU)와&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;개발&amp;nbsp;툴인&amp;nbsp;STM32Cube.AI를&amp;nbsp;채택했다고&amp;nbsp;밝혔다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ST의&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;솔루션은&amp;nbsp;첨단&amp;nbsp;AI&amp;nbsp;기능을&amp;nbsp;활용해&amp;nbsp;라이더의&amp;nbsp;안전과&amp;nbsp;편의성을&amp;nbsp;향상시키는&amp;nbsp;타이어&amp;nbsp;공기압&amp;nbsp;모니터링&amp;nbsp;시스템(TPMS:&amp;nbsp;Tire&amp;nbsp;Pressure&amp;nbsp;Monitoring&amp;nbsp;System)을&amp;nbsp;제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;파나소닉은&amp;nbsp;일본의&amp;nbsp;선도적인&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거&amp;nbsp;생산업체로,&amp;nbsp;일본&amp;nbsp;시장에&amp;nbsp;다양한&amp;nbsp;용도의&amp;nbsp;제품을&amp;nbsp;광범위하게&amp;nbsp;공급하고&amp;nbsp;있다.&amp;nbsp;통학용&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거인&amp;nbsp;티모&amp;nbsp;A는&amp;nbsp;STM32F3&amp;nbsp;MCU에서&amp;nbsp;AI&amp;nbsp;애플리케이션을&amp;nbsp;실행해&amp;nbsp;압력&amp;nbsp;센서를&amp;nbsp;사용하지&amp;nbsp;않고도&amp;nbsp;타이어&amp;nbsp;공기압을&amp;nbsp;추론한다.&amp;nbsp;이&amp;nbsp;시스템은&amp;nbsp;모터와&amp;nbsp;자전거&amp;nbsp;속도&amp;nbsp;센서의&amp;nbsp;정보를&amp;nbsp;기반으로&amp;nbsp;타이어에&amp;nbsp;공기&amp;nbsp;주입이&amp;nbsp;필요한&amp;nbsp;경우&amp;nbsp;경고를&amp;nbsp;생성한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ST의&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;개발&amp;nbsp;툴인&amp;nbsp;STM32Cube.AI를&amp;nbsp;통해&amp;nbsp;파나소닉은&amp;nbsp;STM32F3&amp;nbsp;내장&amp;nbsp;메모리&amp;nbsp;공간에&amp;nbsp;맞추면서&amp;nbsp;이&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;기능을&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;이&amp;nbsp;새로운&amp;nbsp;기능은&amp;nbsp;타이어&amp;nbsp;공기압에&amp;nbsp;대한&amp;nbsp;유지보수를&amp;nbsp;간소화하면서&amp;nbsp;라이더의&amp;nbsp;안전을&amp;nbsp;향상시키고,&amp;nbsp;타이어와&amp;nbsp;기타&amp;nbsp;자전거&amp;nbsp;구성요소의&amp;nbsp;수명을&amp;nbsp;연장해준다.&amp;nbsp;또한,&amp;nbsp;공기압&amp;nbsp;센서와&amp;nbsp;같은&amp;nbsp;하드웨어가&amp;nbsp;추가로&amp;nbsp;필요하지&amp;nbsp;않기&amp;nbsp;때문에&amp;nbsp;비용을&amp;nbsp;절감하고&amp;nbsp;설계를&amp;nbsp;간소화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;파나소닉&amp;nbsp;개발부의&amp;nbsp;소프트웨어&amp;nbsp;개발&amp;nbsp;부문&amp;nbsp;매니저인&amp;nbsp;히로유키&amp;nbsp;카모(Hiroyuki&amp;nbsp;KAMO)는&amp;nbsp;&amp;ldquo;파나소닉은&amp;nbsp;모든&amp;nbsp;사람들이&amp;nbsp;이용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;환경&amp;nbsp;친화적이며,&amp;nbsp;안전하고,&amp;nbsp;편리한&amp;nbsp;교통수단을&amp;nbsp;제공한다는&amp;nbsp;사명감으로&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거를&amp;nbsp;개발하고&amp;nbsp;생산한다&amp;rdquo;며,&amp;nbsp;&amp;ldquo;ST의&amp;nbsp;STM32F3&amp;nbsp;MCU는&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거에&amp;nbsp;가격&amp;nbsp;경쟁력을&amp;nbsp;비롯해&amp;nbsp;최적의&amp;nbsp;기능과&amp;nbsp;성능을&amp;nbsp;제공한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STM32F3&amp;nbsp;MCU와&amp;nbsp;STM32Cube.AI를&amp;nbsp;결합해&amp;nbsp;하드웨어&amp;nbsp;변경&amp;nbsp;없이도&amp;nbsp;혁신적인&amp;nbsp;AI&amp;nbsp;기능을&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있었다.&amp;nbsp;ST의&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;솔루션을&amp;nbsp;활용하면서&amp;nbsp;AI&amp;nbsp;기능을&amp;nbsp;갖춘&amp;nbsp;모델을&amp;nbsp;지속적으로&amp;nbsp;늘려&amp;nbsp;나가고,&amp;nbsp;파나소닉의&amp;nbsp;목표를&amp;nbsp;완수하기&amp;nbsp;위해&amp;nbsp;노력할&amp;nbsp;것이다&amp;rdquo;고&amp;nbsp;말했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST의&amp;nbsp;AI&amp;nbsp;솔루션&amp;nbsp;부문&amp;nbsp;총괄&amp;nbsp;상무인&amp;nbsp;마크&amp;nbsp;듀파키에(Marc&amp;nbsp;Dupaquier)는&amp;nbsp;&amp;ldquo;ST는&amp;nbsp;하드웨어&amp;nbsp;및&amp;nbsp;소프트웨어&amp;nbsp;분야&amp;nbsp;모두에서&amp;nbsp;전&amp;nbsp;세계적으로&amp;nbsp;엣지&amp;nbsp;AI를&amp;nbsp;확산시키기&amp;nbsp;위해&amp;nbsp;적극적으로&amp;nbsp;노력해&amp;nbsp;왔으며,&amp;nbsp;산업용과&amp;nbsp;컨슈머&amp;nbsp;장비&amp;nbsp;등&amp;nbsp;광범위한&amp;nbsp;제품에&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;솔루션을&amp;nbsp;제공하고&amp;nbsp;있다&amp;rdquo;며,&amp;nbsp;&amp;ldquo;이번&amp;nbsp;협력은&amp;nbsp;이러한&amp;nbsp;노력의&amp;nbsp;중요한&amp;nbsp;진전을&amp;nbsp;보여주며,&amp;nbsp;파나소닉의&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거에서&amp;nbsp;AI&amp;nbsp;기능을&amp;nbsp;처음으로&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;지원하게&amp;nbsp;돼&amp;nbsp;기쁘게&amp;nbsp;생각한다.&amp;nbsp;ST는&amp;nbsp;우리의&amp;nbsp;삶을&amp;nbsp;향상시키는&amp;nbsp;데&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;다양한&amp;nbsp;시장에&amp;nbsp;AI&amp;nbsp;적용&amp;nbsp;사례&amp;nbsp;및&amp;nbsp;솔루션을&amp;nbsp;지속적으로&amp;nbsp;제시해&amp;nbsp;나갈&amp;nbsp;것이다&amp;rdquo;고&amp;nbsp;밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ST는&amp;nbsp;일본&amp;nbsp;도쿄&amp;nbsp;빅사이트에서&amp;nbsp;2024년&amp;nbsp;5월&amp;nbsp;22일에서&amp;nbsp;24일까지&amp;nbsp;열리는&amp;nbsp;AI&amp;nbsp;엑스포(AI&amp;nbsp;Expo)에서&amp;nbsp;STM32&amp;nbsp;MCU와&amp;nbsp;다양한&amp;nbsp;AI&amp;nbsp;개발&amp;nbsp;툴&amp;nbsp;등의&amp;nbsp;엣지&amp;nbsp;AI&amp;nbsp;솔루션을&amp;nbsp;선보일&amp;nbsp;예정이다.&amp;nbsp;STM32F3&amp;nbsp;MCU&amp;nbsp;및&amp;nbsp;STM32Cube.AI를&amp;nbsp;탑재한&amp;nbsp;파나소닉&amp;nbsp;사이클&amp;nbsp;테크놀로지의&amp;nbsp;전기&amp;nbsp;보조&amp;nbsp;자전거와&amp;nbsp;모터&amp;nbsp;장치(컷어웨이&amp;nbsp;샘플)도&amp;nbsp;이번&amp;nbsp;엑스포에&amp;nbsp;전시된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>▶ STM32/News</category>
      <category>Cube A.I</category>
      <category>Edge A.I</category>
      <category>Edge AI</category>
      <category>ST MCU</category>
      <category>STM32</category>
      <category>STM32Cbue AI</category>
      <category>STM32F3</category>
      <category>인공지능</category>
      <category>파나소닉</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/228</guid>
      <comments>https://cpattern.tistory.com/228#entry228comment</comments>
      <pubDate>Mon, 8 Apr 2024 10:50:14 +0900</pubDate>
    </item>
    <item>
      <title>STM32G4  최대 시스템 클럭 170MHz 설정 방법</title>
      <link>https://cpattern.tistory.com/227</link>
      <description>&lt;div id=&quot;SE-b1038300-0b35-4a8f-8585-6bd134b7c187&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-7e61e982-35e6-4959-8a22-c656e512a616&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;STM32G4를 사용하시는 분들중에 CubeMX에서 System Clock을 Max 170MHz 로 설정이 안되는 황당한 경험을 한 경우가 있을 것 같습니다. 무방비 상태에서 HCLK를 170MHz 설정하면 아래와 같은 메시지를 보게 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-bc2bc511-ad2a-43cb-9e80-8658a13885f6&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sguRp/btsGfw4mNxn/K7jSb2pbgYgdeM6G8djCiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sguRp/btsGfw4mNxn/K7jSb2pbgYgdeM6G8djCiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sguRp/btsGfw4mNxn/K7jSb2pbgYgdeM6G8djCiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsguRp%2FbtsGfw4mNxn%2FK7jSb2pbgYgdeM6G8djCiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;294&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-21781f46-a278-4950-b0d8-3ab2558814b9&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-948f606b-34ef-4105-ba57-659521329ab2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a2f11178-060b-4418-a64d-107b1ef7696c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;문제는 아무런 안내없이 저런 경고를 띄운 후에 150MHz로 강제 설정이 되어 버립니다. 원인은 reference manual에서 확인 할 수 있으며 CubeMX의 default 세팅 값인 아래 VOS(Voltage Scale)에서는 최대 150MHz로 밖에 설정이 안되는 것이 원입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-9e02c107-76e6-4872-bc51-e2cb73033eeb&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tQklW/btsGdsvNRPa/YgEymar6CSkWnaRigVG2K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tQklW/btsGdsvNRPa/YgEymar6CSkWnaRigVG2K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tQklW/btsGdsvNRPa/YgEymar6CSkWnaRigVG2K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtQklW%2FbtsGdsvNRPa%2FYgEymar6CSkWnaRigVG2K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;21&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-78bbb71a-6d69-4f44-ac20-06407a98a017&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-0393facc-8be6-42b0-810b-19efbd8db33e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;따라서 CubeMX의 RCC설정에서 Power Regulator Voltage Scale 1 boost로 설정하고 다시 170MHz로 설정하면 정상적으로 설정이 되는 것을 확인 할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5dba836d-f4c4-4435-93c5-3274da016ca8&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;369&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBOvMm/btsGeLuaLqp/1K388xmh2ElDFpcaPBG80k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBOvMm/btsGeLuaLqp/1K388xmh2ElDFpcaPBG80k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBOvMm/btsGeLuaLqp/1K388xmh2ElDFpcaPBG80k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBOvMm%2FbtsGeLuaLqp%2F1K388xmh2ElDFpcaPBG80k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;369&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;369&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-52a4382a-40b4-4a44-861b-f34952820145&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;229&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfI4r8/btsGeQ3dv1A/TPhSTElhwYaN90VSdmpNE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfI4r8/btsGeQ3dv1A/TPhSTElhwYaN90VSdmpNE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfI4r8/btsGeQ3dv1A/TPhSTElhwYaN90VSdmpNE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfI4r8%2FbtsGeQ3dv1A%2FTPhSTElhwYaN90VSdmpNE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;554&quot; height=&quot;229&quot; data-origin-width=&quot;554&quot; data-origin-height=&quot;229&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3ecffe5d-c1d7-4131-8425-14bfe432fa8c&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-0484233e-aabd-4a06-bf2e-8752c2e971bd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;*VOS는 STM32에서 main regulator의 전압을 결정하는 기능입니다. 낮은 주파수로 시스템을 구동시킬 때는 보다 낮은 전압으로 core를 동작시켜 소비전류를 줄여주는 것이 목적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-857fa8de-db32-4c38-9c0b-2494954e0d50&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fd7b288a-fb2a-47fa-bdc3-8dd471aac1f3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>▶ STM32/Peripheral</category>
      <category>RCC</category>
      <category>STM32</category>
      <category>STM32G4</category>
      <category>VOS</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/227</guid>
      <comments>https://cpattern.tistory.com/227#entry227comment</comments>
      <pubDate>Sat, 30 Mar 2024 12:36:32 +0900</pubDate>
    </item>
    <item>
      <title>정밀한 코드 수행 시간 측정(Feat. CoreDebug)</title>
      <link>https://cpattern.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;간혹 코드 수행시간을 타이트하게 관리 해야할 경우가 있습니다. 이럴 땐 각 함수별로 혹은 코드 흐름중에 해당 코드 수행시간을 측정할 수 있다면 좀 더 시간관리가 용이할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 Arm cotex-m3, m4 에서는 CoreDebug라는 register를 통해 CPU cycle을 측정 해 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1711358325487&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;uint32_t cycles = 0;

CoreDebug-&amp;gt;DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT-&amp;gt;CTRL |= DWT_CTRL_CYCCNTENA_Msk;
DWT-&amp;gt;CYCCNT = 0;

// 수행코드 삽입

cycles = DWT-&amp;gt;CYCCNT;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 수행코드 사이에 interrupt가 발생하게되면 오차가 발생할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cycles는 Core clock cycle이므로 core에 입력되는 주파수를 안다면 역으로 계산 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;끝&amp;gt;&lt;/p&gt;</description>
      <category>▶ ARM Core</category>
      <category>CoreDebug</category>
      <category>CPU cycle</category>
      <category>STM32</category>
      <category>디버그</category>
      <category>디버깅</category>
      <category>코드수행시간</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/226</guid>
      <comments>https://cpattern.tistory.com/226#entry226comment</comments>
      <pubDate>Mon, 25 Mar 2024 18:21:48 +0900</pubDate>
    </item>
    <item>
      <title>STM32 Flash Memory에 대한 이야기</title>
      <link>https://cpattern.tistory.com/225</link>
      <description>&lt;div id=&quot;SE-48a11baa-3c93-41cc-b0f4-6ff03537c2f5&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-eaef7ed6-374c-40e2-98f6-8104136f1d70&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이번 포스팅에서는 STM32 내부 플래 메모리에 대한 이야기를 해보려고 합니다. VDD에 전원이 들어오거나 RESET를 통해 시스템이 동작을 시작할 때 코드를 인출하는 곳이 내부 플래시 메모리입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fec52743-ac40-4961-8b74-124982ba3d7a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-b6e36468-7ef2-4c0d-9bf2-bc518cb63809&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;MCU의 내부 플래시 메모리는 제품마다 전체, 섹터, 페이지 등의 크기가 다 다르기 때문에 어플리케이션에 적합한 제품을 골라야 비용을 절약 할 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-a8baef53-f994-417f-9f3e-dcff3c0e1e85&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-53191bf8-bac6-4858-910c-0d62830e4342&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Flash Memory 속도&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-dae21305-f6be-47f5-ad50-907863b592bd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Datasheet 등에는 표시되어 있지 않지만 의외로 Core Clock에 비해 플래시 속도가 몇 배 느립니다. 어플리케이션의 성능이 Core 속도 만큼 나오지 않는 이유는 바로 이 때문입니다. 이를 극복하기 위해 ART Accelerator라는 STM32 자체 기술이 탑재되어 있긴 한데 Branch나 interrupt가 많은 어플리케이션에서는 RAM 상주 code를 구현하는게 더 낫습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-65888fc4-b814-4e44-964c-a0e3952320e8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이처럼 플래시 속도와 Core 속도의 차이 때문에 플래시 Read access시에 Read access latency라는 것이 꼭 필요합니다. 만약 Read access latency 설정을 잘 못하면 어플리케이션은 fault에 빠지게 됩니다. 아래는 STM32G4의 Read access latency 설정 값입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-31e4b972-d54b-4065-840c-fb73f78fc0f7&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zVPwG/btsF5usGGzG/4OcGaUdrkmeuZ1sIQnAQF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zVPwG/btsF5usGGzG/4OcGaUdrkmeuZ1sIQnAQF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zVPwG/btsF5usGGzG/4OcGaUdrkmeuZ1sIQnAQF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzVPwG%2FbtsF5usGGzG%2F4OcGaUdrkmeuZ1sIQnAQF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;298&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ad94d3d3-ec7f-400f-8f25-1105ee5ec624&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-325db8f6-0613-4acc-8228-f2d0824a113c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Flash 수명&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-65177da5-16bd-447a-a498-d92d56d7e449&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;EEPROM에 비해 플래시 메모리의 수명은 현저히 짧습니다. 이러한 짧은 수명 때문에 빈번한 데이터 수정을 하는 어플리케이션에서 Data flash로 사용하기엔 부족합니다. 이를 극복하기 위해서 STM32는 &lt;/span&gt;&lt;span&gt;&lt;a style=&quot;color: #608cba;&quot; href=&quot;https://www.st.com/en/embedded-software/x-cube-eeprom.html&quot;&gt;EEPROM Emul &lt;/a&gt;&lt;/span&gt;&lt;span&gt;이라는 소프트웨어 확장팩을 이용해 cycling issue를 해결하고 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-817ab819-aeb0-41c4-8637-9ad80e3e8249&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래는 STM32G4의 수명입니다. 약 10K(만번)의 Erase 횟수 제한을 가지고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-143389a2-65ee-4a71-91f0-b75c563264c6&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6Re0k/btsF4WbMVNq/NaDBcvFdiibiPd4BPZjT71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6Re0k/btsF4WbMVNq/NaDBcvFdiibiPd4BPZjT71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6Re0k/btsF4WbMVNq/NaDBcvFdiibiPd4BPZjT71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6Re0k%2FbtsF4WbMVNq%2FNaDBcvFdiibiPd4BPZjT71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;91&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-36366bcf-30af-4e1d-9044-6cc499cf5f97&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-1a977b8c-0f54-4dcb-9c23-1227712159de&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-612edf76-006f-4ca6-b235-a8bddfe4fa10&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Flash Memory Write/Erase&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-e3b00bec-0b77-4e18-84ab-c72ce9919943&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;제품마다 다르지만 플래시 메모리 Write/Erase 시 적합한 VDD Level이 있을 수 있으니 제품 데이터시트를 반드시 확인해야 합니다. &lt;/span&gt;&lt;span&gt;&lt;u&gt;&lt;b&gt;플래시 메모리 Write/Erase시 순간적으로 MCU 내부에서 높은 전압과 전류를 사용하기에 전원이 불안정하면 전압이 Drop 될 수 있으며 이는 불완전한 데이터가 쓰여지거나 Erase operation에 에러가 발생할 수도 있습니다.&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;span&gt;&lt;u&gt; &lt;/u&gt;&lt;/span&gt;&lt;span&gt;이를 극복하기 위해 전원단에 Cap을 추가로 달 수도 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fcc39647-6f16-48ac-8f4d-bd6668c31cab&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-aecfcedf-6f49-4cac-8092-c3de1cf188db&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;제품마다 플래시의 Erase 단위가 다릅니다. 어떤 제품은 Sector 단위 어떤 제품은 Page 단위로 Erase가 가능합니다. 아래는 STM32G4의 예이며 이 제품은 Page 단위입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-dca4c6b8-6815-411e-9837-7be31a2c0c1d&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBQHcE/btsF1T1U0fe/p9PkWZ3Lq6uuPFyyqzuJTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBQHcE/btsF1T1U0fe/p9PkWZ3Lq6uuPFyyqzuJTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBQHcE/btsF1T1U0fe/p9PkWZ3Lq6uuPFyyqzuJTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBQHcE%2FbtsF1T1U0fe%2Fp9PkWZ3Lq6uuPFyyqzuJTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;555&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-513c7951-3bde-460c-bf89-9752822918d8&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-d3d9fa16-71b3-40d2-8ccc-8426a2896498&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;각각의 Erase/Program 소요시간은 데이터시트에 상세히 적혀있으니 참고하시면 됩니다. 아래는 STM32G4의 소요시간입니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-eb5a5123-7bf4-4f5e-ba0d-eb82e7e803fd&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1b7RA/btsF2FaYt6g/jsklKxbtiUUduECAa26Xb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1b7RA/btsF2FaYt6g/jsklKxbtiUUduECAa26Xb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1b7RA/btsF2FaYt6g/jsklKxbtiUUduECAa26Xb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1b7RA%2FbtsF2FaYt6g%2FjsklKxbtiUUduECAa26Xb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;537&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8e7021e6-636c-4754-8ff1-5c7a6e09733a&quot; style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-115c0274-ccd2-4981-897d-498f386772ac&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7d24b5a4-440f-4f82-add0-c48202434e9d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>▶ STM32/Peripheral</category>
      <category>0x8000000</category>
      <category>Flash Memory</category>
      <category>Flash 메모리</category>
      <category>STM32</category>
      <category>STM32G4</category>
      <category>코드메모리</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/225</guid>
      <comments>https://cpattern.tistory.com/225#entry225comment</comments>
      <pubDate>Mon, 25 Mar 2024 18:09:30 +0900</pubDate>
    </item>
    <item>
      <title>UART(USART) Printf - HAL &amp;amp; Polling (2)</title>
      <link>https://cpattern.tistory.com/224</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지난 포스트에서 좀 더 자세히 CubeMX에서 설정 부터 UART(USART) Printf - HAL &amp;amp; Polling을 설명해보도록 하겠습니다.&lt;/p&gt;
&lt;div id=&quot;SE-d4cf0ee5-312a-44d9-a89b-ade65c37922c&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-d4cf0ee5-312a-44d9-a89b-ade65c37922c&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-d4cf0ee5-312a-44d9-a89b-ade65c37922c&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-418cb00c-3b10-433f-a12d-4c29e6ef4718&quot;&gt;
&lt;p id=&quot;SE-85458a4d-0683-48ee-a71c-913ef90a2ff8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제로 어플리케이션을 개발할 때 내부 동작 순서나 Debugging을 위해 자주 사용하는 printf() Log 출력하는 방법을 STM32G431RB Nucleo board를 사용해서 UART를 통해 구현해보겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-058262dd-10eb-446e-a4a9-3daa9665089a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e50dc9b4-512d-468e-9210-000def4ebbdc&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CubeMX(혹은 CubeIDE)핀 설정은 아래와 같이 해줍니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d0dae0ad-b342-4892-89a5-cd9acdb0b25b&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-d0dae0ad-b342-4892-89a5-cd9acdb0b25b&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-d0dae0ad-b342-4892-89a5-cd9acdb0b25b&quot; data-unitid=&quot;&quot;&gt;
&lt;div id=&quot;SE-d0dae0ad-b342-4892-89a5-cd9acdb0b25b&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-d0dae0ad-b342-4892-89a5-cd9acdb0b25b&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIJOMs/btsFRclzo7i/qakQw23YLFymHMj7I9gpm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIJOMs/btsFRclzo7i/qakQw23YLFymHMj7I9gpm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIJOMs/btsFRclzo7i/qakQw23YLFymHMj7I9gpm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIJOMs%2FbtsFRclzo7i%2FqakQw23YLFymHMj7I9gpm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;630&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4a2ddb6c-666f-4718-9ed0-379b44cbaf57&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-4a2ddb6c-666f-4718-9ed0-379b44cbaf57&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-4a2ddb6c-666f-4718-9ed0-379b44cbaf57&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-91152a78-c032-46e8-ac9b-0f347889c31c&quot;&gt;
&lt;p id=&quot;SE-0f4dc483-cce1-4ea0-a1a6-35e918d7250d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;LPUART : PA2, PA3&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-54290100-1873-4358-8e12-1674c8e54aff&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;BUTTON : PC13 &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-51c7d146-153a-4411-af23-056cdf9ec633&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-624b21e1-c5fa-4b91-985c-05b6913985ff&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;STM32G4 Nucleo board에는 LPUART PA2,PA3을 통해서 UART VCP로 사용할 수 있습니다. 내부 회로도를 확인해 보면 PA2, PA3 핀은 ST-Link와 연결되어 최종적으로 PC에 Virtual COM Port로 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-105cfa00-c6c3-477e-a0e8-2bea27623f43&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 다른 보드에서는 다른 핀을 사용할 수 있으니 board 메뉴얼에서 확인하시면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5bb39d97-70fe-4eee-9a4f-61382162d73f&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8cc20bbe-ea24-45f4-9973-a60dd25bb3ce&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PC13은 Nucleo 보드의 파란색 버튼으로 할당되어 있습니다. 이것은 모든 Nucleo board에서 공통입니다. 파란색 버튼을 누르면 Log를 출력하게 하기 위해서 EXTI로 설정하였습니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-65fefee8-0db5-4bee-bf36-7be26bbfe589&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-65fefee8-0db5-4bee-bf36-7be26bbfe589&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-65fefee8-0db5-4bee-bf36-7be26bbfe589&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-65fefee8-0db5-4bee-bf36-7be26bbfe589&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-65fefee8-0db5-4bee-bf36-7be26bbfe589&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PkeZN/btsFO0GGaKf/uztwQbL0EQxeT4DgVoEG60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PkeZN/btsFO0GGaKf/uztwQbL0EQxeT4DgVoEG60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PkeZN/btsFO0GGaKf/uztwQbL0EQxeT4DgVoEG60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPkeZN%2FbtsFO0GGaKf%2FuztwQbL0EQxeT4DgVoEG60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;246&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ca9b05ca-7833-4c27-b1fe-09cdb7c1be90&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-ca9b05ca-7833-4c27-b1fe-09cdb7c1be90&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-ca9b05ca-7833-4c27-b1fe-09cdb7c1be90&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5d179169-101b-4797-a2cd-20d7af4a66d9&quot;&gt;
&lt;p id=&quot;SE-84fd4f90-8e61-4f98-adb0-2acc9626904f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;물론 NVIC에서 Interrupt도 enable해주어야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-073f6e4f-0085-49cd-9bbe-11878bafb3f6&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-073f6e4f-0085-49cd-9bbe-11878bafb3f6&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-073f6e4f-0085-49cd-9bbe-11878bafb3f6&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-073f6e4f-0085-49cd-9bbe-11878bafb3f6&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-073f6e4f-0085-49cd-9bbe-11878bafb3f6&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vBGpf/btsFRCj41EF/lZbngutVBHSsZIhYcTgTU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vBGpf/btsFRCj41EF/lZbngutVBHSsZIhYcTgTU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vBGpf/btsFRCj41EF/lZbngutVBHSsZIhYcTgTU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvBGpf%2FbtsFRCj41EF%2FlZbngutVBHSsZIhYcTgTU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;604&quot; height=&quot;395&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-74b7baad-6e5f-457b-8a2f-b24146d00f48&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-74b7baad-6e5f-457b-8a2f-b24146d00f48&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-74b7baad-6e5f-457b-8a2f-b24146d00f48&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-0c17cb7b-0b6a-4d63-87e1-62a51d6e0878&quot;&gt;
&lt;p id=&quot;SE-1ab4f3d8-07fc-41db-9f6d-97c73e39dd2f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CubeMX에서 모든 설정은 마쳤습니다. Code generation 하고 CubeIDE에서 Import하여 추가코드를 작성하도록 하겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4be9c8ad-2d1d-49d8-8a2b-960e16f95d1a&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-82831319-46fc-4e8c-a0fd-1b089833a958&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫번째로 할 것은 main.c에 아래와 같이 stdio.h를 추가하는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-8644cd80-196d-474a-8e18-a853d3b59483&quot; data-a11y-title=&quot;코드&quot; data-compid=&quot;SE-8644cd80-196d-474a-8e18-a853d3b59483&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-8644cd80-196d-474a-8e18-a853d3b59483&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;/* USER CODE BEGIN Includes */
#include &amp;lt;stdio.h&amp;gt;
/* USER CODE END Includes */&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-3e18fcc4-6689-4b1b-bea7-a3337f07a929&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-3e18fcc4-6689-4b1b-bea7-a3337f07a929&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-3e18fcc4-6689-4b1b-bea7-a3337f07a929&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-a2a0db9b-639d-4ecc-a662-7edea34cd206&quot;&gt;
&lt;p id=&quot;SE-f272f72b-6186-4242-980d-2cb9c3577e58&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;두번째는 main.c에 printf의 실제 출력되는 prototype 을 정의하는 하는 코드를 추가해 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5c484e0f-84f9-4326-b641-9524649ff8a4&quot; data-a11y-title=&quot;코드&quot; data-compid=&quot;SE-5c484e0f-84f9-4326-b641-9524649ff8a4&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-5c484e0f-84f9-4326-b641-9524649ff8a4&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot;&gt;&lt;code&gt;#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
  HAL_UART_Transmit(&amp;amp;hlpuart1, (uint8_t *)&amp;amp;ch, 1, HAL_MAX_DELAY);
  return ch;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d942479e-b65e-4e26-b7a5-bf799b69ea4e&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-d942479e-b65e-4e26-b7a5-bf799b69ea4e&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-d942479e-b65e-4e26-b7a5-bf799b69ea4e&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-5acc32e8-a5f4-467a-b311-a78136438115&quot;&gt;
&lt;p id=&quot;SE-a796d657-81cd-4123-bf57-6d301f86555f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CubeIDE는 __GNUC__ 로 define되어 있기 때문에&lt;/span&gt;&lt;span style=&quot;color: #007aa6;&quot;&gt; int __io_putchar(int ch)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 사용하게 됩니다. 이제 Log를 출력할 부분에 printf 구문을 추가해 주면 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-530d7cf2-469d-499d-a2f5-2753c8603a77&quot; data-a11y-title=&quot;코드&quot; data-compid=&quot;SE-530d7cf2-469d-499d-a2f5-2753c8603a77&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-530d7cf2-469d-499d-a2f5-2753c8603a77&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_LPUART1_UART_Init();
  /* USER CODE BEGIN 2 */
  printf(&quot;Hello world!\r\n&quot;);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a3e47b3b-4a1d-4d3e-a372-46b7253ecc97&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-a3e47b3b-4a1d-4d3e-a372-46b7253ecc97&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-a3e47b3b-4a1d-4d3e-a372-46b7253ecc97&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-2df2f71a-6e7b-4b75-923c-52bedec7a185&quot;&gt;
&lt;p id=&quot;SE-7bacabea-c5a1-48bc-82d9-eaae520fc6dd&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;저는 위의 코드처럼 Hello world!를 출력하도록 코드를 작성했습니다. 문장 마지막에 \r\n을 써주지 않으며 문자가 출력되지 않으니 이점을 꼭 유의해야 하겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-24b3111c-d9af-47ab-9b97-805394e20314&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-bc7d8e30-28e5-43ed-a398-4197efce62a6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다음은 버튼을 클릭했을 Log가 출력되도록 추가하도록 하겠습니다. PC13에 연결된 EXTI interrupt handler callback 함수를 override 해주면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-5b7cd5ae-0354-42d0-9448-6b2c1ddf4c7b&quot; data-a11y-title=&quot;코드&quot; data-compid=&quot;SE-5b7cd5ae-0354-42d0-9448-6b2c1ddf4c7b&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-5b7cd5ae-0354-42d0-9448-6b2c1ddf4c7b&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  printf(&quot;user button pushed!\r\n&quot;);
}
/* USER CODE END 4 */&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-d17c1ecf-d22b-4e1a-8de0-eba652388030&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-d17c1ecf-d22b-4e1a-8de0-eba652388030&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-d17c1ecf-d22b-4e1a-8de0-eba652388030&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-68c70493-c288-4ba2-ba5e-8e486fdb3185&quot;&gt;
&lt;p id=&quot;SE-55bf90fa-742b-45c1-a778-d520adde2b8e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HAL_GPIO_EXTI_Callback 함수가 EXTI interrupt handler callback 함수이며 main.c에서 두어도 되고 원하는 위치에 두어도 됩니다. &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9b17572e-1864-43aa-a7f7-8943930f2ac7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-e8b636b8-19fe-4947-934d-b50dd004ea4f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;위와 같이 코드를 추가한 후에 보드에 올리고 micro USB로 PC와 연결 후 serial 통신 프로그램(Tera Term 등)으로 연결하시면 아래와 같이 로그를 확인 할 수가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-940f4bdd-ab21-487f-a4f1-72dc12115372&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-940f4bdd-ab21-487f-a4f1-72dc12115372&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-940f4bdd-ab21-487f-a4f1-72dc12115372&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-940f4bdd-ab21-487f-a4f1-72dc12115372&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-940f4bdd-ab21-487f-a4f1-72dc12115372&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4ed14/btsFQcmjplD/Q2NNZ6FgB8bKBLALk8ifA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4ed14/btsFQcmjplD/Q2NNZ6FgB8bKBLALk8ifA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4ed14/btsFQcmjplD/Q2NNZ6FgB8bKBLALk8ifA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4ed14%2FbtsFQcmjplD%2FQ2NNZ6FgB8bKBLALk8ifA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;280&quot; height=&quot;164&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-0d5a262a-c48f-44f6-a7a7-d1a7c5e473bf&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-0d5a262a-c48f-44f6-a7a7-d1a7c5e473bf&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-0d5a262a-c48f-44f6-a7a7-d1a7c5e473bf&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-bb0e3a0e-5140-461f-8e3b-b67e3b6e93de&quot;&gt;
&lt;p id=&quot;SE-73dfc934-26de-43f2-909d-e0e9b7eacae7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한가지 더 팁을 드리자면 현재 &lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #000000;&quot;&gt;__io_putchar(&lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #7f0055;&quot;&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #000000;&quot;&gt; ch)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 함수는 한 글자씩 UART로 문자를 보내기 때문에 상당히 MCU로드를 많이 소비하는 방법으로 되어 있습니다. 아래와 같이 &lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #000000;&quot;&gt;__io_putchar(&lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #7f0055;&quot;&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #e8f2fe; color: #000000;&quot;&gt; ch)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 함수를 _write 함수로 대체하면 MCU 로드를 많이 줄일 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-cdda08c6-0315-4732-afeb-40a47eb45f16&quot; data-a11y-title=&quot;코드&quot; data-compid=&quot;SE-cdda08c6-0315-4732-afeb-40a47eb45f16&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-cdda08c6-0315-4732-afeb-40a47eb45f16&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;int _write(int file, char *ptr, int len)
{
  HAL_UART_Transmit(&amp;amp;hlpuart1, (uint8_t *)ptr, len, HAL_MAX_DELAY);
  return len;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-e8ad5e23-7278-4f58-8cf4-e66a338452e1&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-e8ad5e23-7278-4f58-8cf4-e66a338452e1&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-e8ad5e23-7278-4f58-8cf4-e66a338452e1&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-386fd3c5-32b5-4ea4-a03a-d6b8514affd9&quot;&gt;
&lt;p id=&quot;SE-3dd2b928-7b9b-428b-9e8b-91b73d926495&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어플리케이션이 MCU 로드에 민감하다면 위의 방법을 사용하는 것이 훨씬 더 좋은 방법이며 더 로드를 줄이고자 한다면 DMA 방식으로 바꾸는 것이 가장 좋습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f3e72a96-b834-42b4-9714-4d1892060975&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-d777e2e3-754f-40a5-b420-fb985ae74003&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;* printf에 float 형을 사용해야 한다면 아래 블로그를 참조해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-77dc5435-5090-4a21-8ec5-1650905464f1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-href=&quot;https://forum.digikey.com/t/easily-use-printf-on-stm32/20157&quot;&gt;&lt;a href=&quot;https://forum.digikey.com/t/easily-use-printf-on-stm32/20157&quot;&gt;https://forum.digikey.com/t/easily-use-printf-on-stm32/20157&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-dbee0471-9c0e-4003-ab63-9bb693193d2d&quot; data-a11y-title=&quot;사진&quot; data-compid=&quot;SE-dbee0471-9c0e-4003-ab63-9bb693193d2d&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-dbee0471-9c0e-4003-ab63-9bb693193d2d&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-dbee0471-9c0e-4003-ab63-9bb693193d2d&quot;&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;&quot; data-unitid=&quot;SE-dbee0471-9c0e-4003-ab63-9bb693193d2d&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu2Jcr/btsFOCF5jhX/kDEsxu5REE0pYvzZ1jmid0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu2Jcr/btsFOCF5jhX/kDEsxu5REE0pYvzZ1jmid0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu2Jcr/btsFOCF5jhX/kDEsxu5REE0pYvzZ1jmid0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu2Jcr%2FbtsFOCF5jhX%2FkDEsxu5REE0pYvzZ1jmid0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;403&quot; data-origin-width=&quot;702&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-4904f57a-092e-4574-905b-e6388c5cb7e8&quot; data-a11y-title=&quot;본문&quot; data-compid=&quot;SE-4904f57a-092e-4574-905b-e6388c5cb7e8&quot;&gt;
&lt;div&gt;
&lt;div data-direction=&quot;top&quot; data-compid=&quot;SE-4904f57a-092e-4574-905b-e6388c5cb7e8&quot; data-unitid=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;SE-3c713b75-c231-43a5-9244-548e555df07e&quot;&gt;
&lt;p id=&quot;SE-cdb0df54-ec2b-4bd5-b4fb-db6791e02532&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-ed68a151-0603-4a37-a107-035f162f107c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>▶ STM32/Peripheral</category>
      <category>cubemx</category>
      <category>debugging</category>
      <category>printf</category>
      <category>stdio</category>
      <category>STM32</category>
      <category>STM32CubeMx</category>
      <category>UART</category>
      <category>디버깅</category>
      <author>좋은아침페스츄리</author>
      <guid isPermaLink="true">https://cpattern.tistory.com/224</guid>
      <comments>https://cpattern.tistory.com/224#entry224comment</comments>
      <pubDate>Sun, 17 Mar 2024 21:56:49 +0900</pubDate>
    </item>
  </channel>
</rss>