Release_Notes.html 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="generator" content="pandoc" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  7. <title>Release Notes for STM32WLxx HAL Drivers Package</title>
  8. <style>
  9. code{white-space: pre-wrap;}
  10. span.smallcaps{font-variant: small-caps;}
  11. div.columns{display: flex; gap: min(4vw, 1.5em);}
  12. div.column{flex: auto; overflow-x: auto;}
  13. div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
  14. /* The extra [class] is a hack that increases specificity enough to
  15. override a similar rule in reveal.js */
  16. ul.task-list[class]{list-style: none;}
  17. ul.task-list li input[type="checkbox"] {
  18. font-size: inherit;
  19. width: 0.8em;
  20. margin: 0 0.8em 0.2em -1.6em;
  21. vertical-align: middle;
  22. }
  23. .display.math{display: block; text-align: center; margin: 0.5rem auto;}
  24. </style>
  25. <link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
  26. <link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
  27. </head>
  28. <body>
  29. <div class="row">
  30. <div class="col-sm-12 col-lg-4">
  31. <center>
  32. <h1 id="release-notes-for">Release Notes for</h1>
  33. <h1 id="stm32wlxx-hal-drivers"><mark>STM32WLxx HAL Drivers</mark></h1>
  34. <p>Copyright © 2020 STMicroelectronics</p>
  35. <a href="https://www.st.com" class="logo"><img
  36. src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
  37. </center>
  38. <h1 id="purpose">Purpose</h1>
  39. <p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded
  40. software, ensure maximized portability across STM32 portfolio.</p>
  41. <p>The Portable APIs layer provides a generic, multi instanced and
  42. simple set of APIs to interact with the upper layer (application,
  43. libraries and stacks). It is composed of native and extended APIs set.
  44. It is directly built around a generic architecture and allows the
  45. build-upon layers, like the middleware layer, to implement its functions
  46. without knowing in-depth the used STM32 device. This improves the
  47. library code reusability and guarantees an easy portability on other
  48. devices and STM32 families.</p>
  49. <p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL
  50. that provide basic set of optimized and one shot services. The Low layer
  51. drivers, contrary to the HAL ones are not Fully Portable across the
  52. STM32 families; the availability of some functions depend on the
  53. physical availability of the relative features on the product. The Low
  54. Layer (LL) drivers are designed to offer the following features:</p>
  55. <ul>
  56. <li>New set of inline function for direct and atomic register
  57. access</li>
  58. <li>One-shot operations that can be used by the HAL drivers or from
  59. application level.</li>
  60. <li>Fully Independent from HAL and can be used in standalone usage
  61. (without HAL drivers)</li>
  62. <li>Full features coverage of the all the supported peripherals.</li>
  63. </ul>
  64. </div>
  65. <section id="update-history" class="col-sm-12 col-lg-8">
  66. <h1>Update History</h1>
  67. <div class="collapse">
  68. <input type="checkbox" id="collapse-section5" checked aria-hidden="true">
  69. <label for="collapse-section5" aria-hidden="true"><strong>V1.3.1 /
  70. 20-December-2024</strong></label>
  71. <div>
  72. <h2 id="main-changes">Main Changes</h2>
  73. <ul>
  74. <li>Patch release of <strong>HAL and Low Layer</strong> drivers to
  75. include latest corrections</li>
  76. <li>Update the following IPs Drivers: ADC, CORTEX, CRYP, DAC, GENERIC,
  77. GPIO, I2C, SMBUS, SPIU, SUBGHZ, TIM, UART, UTILS</li>
  78. </ul>
  79. <h2 id="contents">Contents</h2>
  80. <h3 id="hal-drivers-updates"><strong>HAL Drivers</strong> updates</h3>
  81. <ul>
  82. <li><strong>HAL ADC</strong> driver
  83. <ul>
  84. <li>Fix MISRA-C 2012 Rule 15.7 issue</li>
  85. <li>Improve de-init sequence by reset clock configuration on last step
  86. (otherwise, under specific clock source selection, some parameters can
  87. be not reset)</li>
  88. <li>Add CFGR1_CHSELRMOD bit to be reset by LL_ADC_DeInit() function</li>
  89. </ul></li>
  90. <li><strong>HAL CORTEX</strong> driver
  91. <ul>
  92. <li>Update HAL_MPU_ConfigRegion() to allow the configuration of the MPU
  93. registers independently of the value of Enable/Disable field and add new
  94. APIs HAL_MPU_EnableRegion() / HAL_MPU_DisableRegion()</li>
  95. </ul></li>
  96. <li><strong>HAL CRYP</strong> driver
  97. <ul>
  98. <li>Update AES GCM in interrupt mode to avoid Computation Completed IRQ
  99. fires before the DINR pointer increment</li>
  100. <li>Update Crypt/Decrypt IT processes to avoid Computation Completed IRQ
  101. fires before the DINR pointer increment</li>
  102. </ul></li>
  103. <li><strong>HAL DAC</strong> driver
  104. <ul>
  105. <li>Fix HAL DAC calibration procedure (function
  106. HAL_DACEx_SelfCalibrate() ) to manage case of calibration factor equal
  107. to range maximum value (previously, in this case calibration factor was
  108. reset, leading to voltage accuracy not optimal)</li>
  109. <li>Update DAC buffer calibration according to Reference Manual</li>
  110. </ul></li>
  111. <li><strong>HAL Generic</strong> driver
  112. <ul>
  113. <li>Update of HAL_GetTickFreq() brief</li>
  114. </ul></li>
  115. <li><strong>HAL I2C</strong> driver
  116. <ul>
  117. <li>Remove HAL DMA dependency thanks to the HAL_DMA_MODULE_ENABLED
  118. define</li>
  119. <li>Solve Slave No stretch not functional by using HAL Slave
  120. interface</li>
  121. <li>Update I2C_WaitOnFlagUntilTimeout() API to handle error case</li>
  122. <li>Update HAL_I2C_Slave_Transmit() to check if the received NACK is the
  123. good one</li>
  124. <li>Update HAL_I2C_Init() API to clear ADD10 bit in 7 bit addressing
  125. mode</li>
  126. <li>Update I2C_GENERATE_START() macro to generate stop automatically in
  127. 10 bit addressing mode</li>
  128. <li>Remove the unusable code in function HAL_I2C_IsDeviceReady</li>
  129. <li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const
  130. qualifiers</li>
  131. <li>Update I2C_WaitOnRXNEFlagUntilTimeout to check I2C_FLAG_AF
  132. independently from I2C_FLAG_RXNE</li>
  133. <li>Update HAL I2C driver to prefetch data before starting the
  134. transmission: implementation of errata sheet workaround I2C2-190208 :
  135. Transmission stalled after first byte</li>
  136. <li>Update I2C_Slave_ISR_IT, I2C_Slave_ISR_DMA and I2C_ITSlaveCplt to
  137. prevent the call of HAL_I2C_ListenCpltCallback twice</li>
  138. <li>Update HAL_I2C_Mem_Write_IT API to initialize XferSize at 0</li>
  139. <li>Enhance HAL I2C to be thread safe</li>
  140. </ul></li>
  141. <li><strong>HAL SMBUS</strong> driver
  142. <ul>
  143. <li>Update SMBUS_ITErrorHandler to flush TXDR just in case of error</li>
  144. <li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const
  145. qualifiers</li>
  146. <li>Update HAL SMBUS driver to prefetch data before starting the
  147. transmission: implementation of errata sheet workaround I2C2-190208 :
  148. Transmission stalled after first byte</li>
  149. </ul></li>
  150. <li><strong>HAL SPI</strong> driver
  151. <ul>
  152. <li>Update HAL_SPI_TransmitReceive API to set the bit CRCNEXT in case of
  153. one byte transaction</li>
  154. <li>Update IT API to enable interrupts after process unlock</li>
  155. <li>Fix driver to don’t update state in case of error
  156. (HAL_SPI_STATE_READY will be set only in case of HAL_TIMEOUT)</li>
  157. </ul></li>
  158. <li><strong>HAL SUBGHZ</strong> driver
  159. <ul>
  160. <li>Change macro from ‘CM0PLUS’ to ‘CORE_CM0PLUS’ as in preprocessor
  161. directives</li>
  162. </ul></li>
  163. <li><strong>HAL TIM</strong> driver
  164. <ul>
  165. <li>Update interrupt flag is cleared when the update event is generated
  166. by software</li>
  167. <li>Remove multiple volatile reads or writes in interrupt handler for
  168. better performance</li>
  169. </ul></li>
  170. <li><strong>HAL UART</strong> driver
  171. <ul>
  172. <li>Avoid RTOF flag to be cleared by a transmit process in polling
  173. mode</li>
  174. <li>Fix incorrect gState check in
  175. HAL_UART_RegisterRxEventCallback/HAL_UART_UnRegisterRxEventCallback to
  176. allow user Rx Event Callback registration when a transmit is
  177. ongoing</li>
  178. <li>Update initialisation sequence for TXINV, RXINV and TXRXSWAP
  179. settings</li>
  180. </ul></li>
  181. <li><strong>HAL UTILS</strong> driver
  182. <ul>
  183. <li>Fix UFQFPN48 package definition<br />
  184. </li>
  185. </ul></li>
  186. </ul>
  187. <h3 id="ll-drivers-updates"><strong>LL Drivers</strong> updates</h3>
  188. <ul>
  189. <li><strong>LL GPIO</strong> driver
  190. <ul>
  191. <li>Remove a redundant call to LL_GPIO_SetPinMode() within the
  192. LL_GPIO_Init() API</li>
  193. </ul></li>
  194. <li><strong>LL I2C</strong> driver
  195. <ul>
  196. <li>Update LL_I2C_HandleTranfer function to prevent undefined behavior
  197. of volatile usage before updating the CR2 register</li>
  198. <li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const
  199. qualifiers<br />
  200. </li>
  201. </ul></li>
  202. </ul>
  203. <h2 id="known-limitations">Known Limitations</h2>
  204. <p>None</p>
  205. <h2 id="development-toolchains-and-compilers">Development Toolchains and
  206. Compilers</h2>
  207. <ul>
  208. <li>IAR Embedded Workbench for ARM (EWARM) toolchain V9.20.1 + <a
  209. href="./../../Utilities/PC_Software/EWARMv8_STM32WLxx_V4.9_Signed.zip">Patch
  210. EWARM</a></li>
  211. <li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.36 +
  212. <a
  213. href="./../../Utilities/PC_Software/Keil.STM32WLxx_DFP.1.1.1.zip">Keil
  214. DFP V1.1.1 Pack</a></li>
  215. <li>STM32CubeIDE 1.11.0 (GNU Tools for STM32 10.3-2021.10)</li>
  216. </ul>
  217. <h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
  218. <p>Supported Devices:</p>
  219. <ul>
  220. <li>STM32WL55xx</li>
  221. <li>STM32WL54xx</li>
  222. <li>STM32WLE5xx</li>
  223. <li>STM32WLE4xx</li>
  224. <li>STM32WL5Mxx</li>
  225. </ul>
  226. <h2 id="backward-compatibility">Backward Compatibility</h2>
  227. <p>Not applicable</p>
  228. <h2 id="dependencies">Dependencies</h2>
  229. <p>None</p>
  230. <p><br />
  231. </p>
  232. </div>
  233. </div>
  234. <div class="collapse">
  235. <input type="checkbox" id="collapse-section4" aria-hidden="true">
  236. <label for="collapse-section4" aria-hidden="true"><strong>V1.3.0 /
  237. 09-November-2022</strong></label>
  238. <div>
  239. <h2 id="main-changes-1">Main Changes</h2>
  240. <ul>
  241. <li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to
  242. include latest corrections</li>
  243. <li>Remove HAL_LOCK/HAL_UNLOCK calls in HAL_xxxx_RegisterCallback &amp;
  244. HAL_xxxx_UnregisterCallback for IPs (DAC, IRDA, LPTIM, SMARTCARD, TIM,
  245. UART, USART)</li>
  246. <li>Enhance code quality (MISRA-C rules 8.13, 11.9) for some drivers:
  247. ADC, COMP, DMA, IRDA, LPTIM, SMARTCARD, TIM, UART, USART</li>
  248. </ul>
  249. <h2 id="contents-1">Contents</h2>
  250. <h3 id="hal-drivers-updates-1"><strong>HAL Drivers</strong> updates</h3>
  251. <ul>
  252. <li><strong>HAL ADC</strong> driver
  253. <ul>
  254. <li>Disable AutoPowerOff when performing calibration</li>
  255. <li>Rename ADC_TRx registers to AWDxTR to be in accordance with the
  256. Reference Manual</li>
  257. </ul></li>
  258. <li><strong>HAL CORTEX</strong> driver
  259. <ul>
  260. <li>Remove #define LL_MPU_TEX_LEVEL4 (no Level 2 cache for STM32 SoC
  261. with Armv7-M cortex)</li>
  262. </ul></li>
  263. <li><strong>HAL CRC</strong> driver
  264. <ul>
  265. <li>Add filter in HAL_CRCEx_Polynomial_Set() function to exclude even
  266. polynomials</li>
  267. </ul></li>
  268. <li><strong>HAL CRYP</strong> driver
  269. <ul>
  270. <li>Add interleaved mode</li>
  271. </ul></li>
  272. <li><strong>HAL DAC</strong> driver
  273. <ul>
  274. <li>Fix HAL_GetTick() timeout vulnerability</li>
  275. <li>Return HAL_ERROR if configuration is not available on device</li>
  276. </ul></li>
  277. <li><strong>HAL EXTI</strong> driver
  278. <ul>
  279. <li>Fix computation of pExtiConfig-&gt;GPIOSel in
  280. HAL_EXTI_GetConfigLine()</li>
  281. </ul></li>
  282. <li><strong>HAL Generic</strong> driver
  283. <ul>
  284. <li>Add HAL_RADIO APIs to handle Radio services (only for
  285. STM32WL5M)</li>
  286. </ul></li>
  287. <li><strong>HAL I2C</strong> driver
  288. <ul>
  289. <li>Fix Timeout issue using HAL MEM interface through FreeRTOS</li>
  290. <li>Fix I2C_IsErrorOccurred returning error if timeout is detected</li>
  291. <li>Fix ADDRF flag cleared too early when the restart is received but
  292. the direction has changed</li>
  293. </ul></li>
  294. <li><strong>HAL IRDA</strong> driver
  295. <ul>
  296. <li>Fix wrong cast when computing the USARTDIV value in
  297. IRDA_SetConfig()</li>
  298. </ul></li>
  299. <li><strong>HAL LPTIM</strong> driver
  300. <ul>
  301. <li>Enhance LPTIM state management</li>
  302. <li>Fix IS_LPTIM_AUTORELOAD &amp; IS_LPTIM_PERIOD macros to check that
  303. AutoReload value must be strictly greater than 0</li>
  304. </ul></li>
  305. <li><strong>HAL RCC</strong> driver
  306. <ul>
  307. <li>Optimize HAL_RCC_OscConfig function when checking if oscillator is
  308. ready</li>
  309. <li>Optimize HAL_RCC_GetOscConfig function</li>
  310. <li>Remove GPIO configuration in HAL_RCCEx_EnableLSCO &amp;
  311. HAL_RCCEx_DisableLSCO functions</li>
  312. </ul></li>
  313. <li><strong>HAL RTC</strong> driver
  314. <ul>
  315. <li>Improve HAL_RTC_Init function to avoid initialization if already
  316. done</li>
  317. </ul></li>
  318. <li><strong>HAL SMARTCARD</strong> driver
  319. <ul>
  320. <li>Fix wrong cast when computing the USARTDIV value in
  321. SMARTCARD_SetConfig() function</li>
  322. </ul></li>
  323. <li><strong>HAL SUBGHZ</strong> driver
  324. <ul>
  325. <li>Clear the interrupt CR register just after having read it</li>
  326. <li>Support new feature LoraFHSS (Lora Frequency Hopping Spread
  327. Spectrum)</li>
  328. <li>Add new state HAL_SUBGHZ_STATE_RESET_RF_READY to avoid to
  329. reinitialize RF on existing from Standby mode</li>
  330. </ul></li>
  331. <li><strong>HAL TIM</strong> driver
  332. <ul>
  333. <li>Improve driver robustness against wrong period values</li>
  334. <li>Improve driver robustness against wrong DMA related parameters</li>
  335. <li>Add new __HAL_TIM_SELECT_CCDMAREQUEST() macro to select CCx DMA
  336. source</li>
  337. </ul></li>
  338. <li><strong>HAL UART</strong> driver
  339. <ul>
  340. <li>Fix wrong cast when computing the USARTDIV value in UART_SetConfig()
  341. function</li>
  342. <li>Add HAL_UARTEx_GetRxEventType function to retrieve the type of event
  343. that has led the RxEventCallback execution</li>
  344. <li>Remove HAL_LOCK/HAL_UNLOCK calls in HAL UART Tx and Rx APIs to fix a
  345. concurrent access issue</li>
  346. <li>Disable the Receiver Timeout Interrupt when data reception is
  347. completed</li>
  348. </ul></li>
  349. </ul>
  350. <p><br />
  351. </p>
  352. <h3 id="ll-drivers-updates-1"><strong>LL Drivers</strong> updates</h3>
  353. <ul>
  354. <li><strong>LL LPTIM</strong> driver
  355. <ul>
  356. <li>Enhance code quality by renaming all functions
  357. LL_LPTIM_ClearFLAG_Xxxxx with LL_LPTIM_ClearFlag_Xxxxx</li>
  358. </ul></li>
  359. <li><strong>LL System</strong> driver
  360. <ul>
  361. <li>Fix LL_SYSCFG_GetEXTISource function which returned wrong result on
  362. M4 core</li>
  363. </ul></li>
  364. <li><strong>LL USART</strong> driver
  365. <ul>
  366. <li>Fix compilation warnings generated with ARMV6 compiler</li>
  367. </ul></li>
  368. <li><strong>LL Utils</strong> driver
  369. <ul>
  370. <li>Fix a wrong parameter of __LL_RCC_CALC_MSI_FREQ given erroneous PLL
  371. frequency</li>
  372. </ul></li>
  373. </ul>
  374. <p><br />
  375. </p>
  376. <h2 id="known-limitations-1">Known Limitations</h2>
  377. <p>None</p>
  378. <h2 id="development-toolchains-and-compilers-1">Development Toolchains
  379. and Compilers</h2>
  380. <ul>
  381. <li>IAR Embedded Workbench for ARM (EWARM) toolchain V9.20.1 + <a
  382. href="./../../Utilities/PC_Software/EWARMv8_STM32WLxx_V4.9_Signed.zip">Patch
  383. EWARM</a></li>
  384. <li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.36 +
  385. <a
  386. href="./../../Utilities/PC_Software/Keil.STM32WLxx_DFP.1.1.1.zip">Keil
  387. DFP V1.1.1 Pack</a></li>
  388. <li>STM32CubeIDE 1.11.0 (GNU Tools for STM32 10.3-2021.10)</li>
  389. </ul>
  390. <h2 id="supported-devices-and-boards-1">Supported Devices and
  391. boards</h2>
  392. <p>Supported Devices:</p>
  393. <ul>
  394. <li>STM32WL55xx</li>
  395. <li>STM32WL54xx</li>
  396. <li>STM32WLE5xx</li>
  397. <li>STM32WLE4xx</li>
  398. <li>STM32WL5Mxx</li>
  399. </ul>
  400. <h2 id="backward-compatibility-1">Backward Compatibility</h2>
  401. <p>Not applicable</p>
  402. <h2 id="dependencies-1">Dependencies</h2>
  403. <p>None</p>
  404. <p><br />
  405. </p>
  406. </div>
  407. </div>
  408. <div class="collapse">
  409. <input type="checkbox" id="collapse-section3" aria-hidden="true">
  410. <label for="collapse-section3" aria-hidden="true"><strong>V1.2.0 /
  411. 4-February-2022</strong></label>
  412. <div>
  413. <h2 id="main-changes-2">Main Changes</h2>
  414. <ul>
  415. <li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to
  416. include latest corrections</li>
  417. <li>All source files: update disclaimer to add reference to the new
  418. license agreement</li>
  419. <li>Correct English spelling errors and typos</li>
  420. </ul>
  421. <h2 id="contents-2">Contents</h2>
  422. <h3 id="hal-drivers-updates-2"><strong>HAL Drivers</strong> updates</h3>
  423. <ul>
  424. <li><strong>HAL ADC</strong> driver
  425. <ul>
  426. <li>Enhance ADC calibration to reduce noise effect</li>
  427. <li>Fix write access to registers ADC_CFGR1 and ADC_CFGR2 in
  428. HAL_ADC_Init() and HAL_ADC_AnalogWDGConfig() functions</li>
  429. </ul></li>
  430. <li><strong>HAL GPIO</strong> driver
  431. <ul>
  432. <li>Reorder EXTI config in HAL_GPIO_Init/HAL_GPIO_DeInit to avoid
  433. unexpected level detection</li>
  434. <li>Add new HAL_GPIO_WriteMultipleStatePin() API for multiple pin access
  435. in same cycle</li>
  436. </ul></li>
  437. <li><strong>HAL I2C</strong> driver
  438. <ul>
  439. <li>Fix written reserved bit 28 in I2C_CR2 register</li>
  440. <li>Improve I2C_WaitOnFlagUntilTimeout() description to match code</li>
  441. <li>Update to handle errors in polling mode</li>
  442. <li>Rename I2C_IsAcknowledgeFailed() to I2C_IsErrorOccurred() and
  443. correctly manage when error occurs</li>
  444. <li>Fix some communication issue due to low system frequency execution
  445. (HSI)</li>
  446. </ul></li>
  447. <li><strong>HAL IRDA</strong> driver
  448. <ul>
  449. <li>Improve header description of IRDA_WaitOnFlagUntilTimeout()
  450. function</li>
  451. <li>Add a check on the IRDA parity before enabling the parity error
  452. interrupt</li>
  453. </ul></li>
  454. <li><strong>HAL LPTIM</strong> driver
  455. <ul>
  456. <li>Add check on PRIMASK register to prevent from enabling unwanted
  457. global interrupts within LPTIM_Disable() and LL_LPTIM_Disable()</li>
  458. </ul></li>
  459. <li><strong>HAL RCC</strong> driver
  460. <ul>
  461. <li>Enhance RCC_MCOx in order to support both MCO number and AF
  462. mapping</li>
  463. </ul></li>
  464. <li><strong>HAL SMARTCARD</strong> driver
  465. <ul>
  466. <li>Improve header description of SMARTCARD_WaitOnFlagUntilTimeout()
  467. function</li>
  468. </ul></li>
  469. <li><strong>HAL SMBUS</strong> driver
  470. <ul>
  471. <li>Add new APIs to support wake up capability:
  472. <ul>
  473. <li>HAL_SMBUSEx_EnableWakeUp()</li>
  474. <li>HAL_SMBUSEx_DisableWakeUp()</li>
  475. </ul></li>
  476. <li>Update to fix issue of mismatched data received by master in case of
  477. data size to be transmitted by the slave is greater than the data size
  478. to be received by the master</li>
  479. <li>Add flush on TX register</li>
  480. </ul></li>
  481. <li><strong>HAL TIM</strong> driver
  482. <ul>
  483. <li>Fix incorrect behavior of the timer if input signal changes before
  484. the end of timer configuration</li>
  485. </ul></li>
  486. <li><strong>HAL UART</strong> driver
  487. <ul>
  488. <li>Improve header description of UART_WaitOnFlagUntilTimeout()
  489. function</li>
  490. <li>Add a check on the UART parity before enabling the parity error
  491. interruption</li>
  492. </ul></li>
  493. <li><strong>HAL USART</strong> driver
  494. <ul>
  495. <li>Improve header description of USART_WaitOnFlagUntilTimeout()
  496. function</li>
  497. <li>Add a check on the USART parity before enabling the parity error
  498. interruption</li>
  499. </ul></li>
  500. </ul>
  501. <p><br />
  502. </p>
  503. <h3 id="ll-drivers-updates-2"><strong>LL Drivers</strong> updates</h3>
  504. <ul>
  505. <li><strong>LL ADC</strong> driver
  506. <ul>
  507. <li>Fix MISRA warning register shift overflow</li>
  508. </ul></li>
  509. <li><strong>LL CORTEX</strong> driver
  510. <ul>
  511. <li>Rename LL_CPUID_GetConstant() to LL_CPUID_GetArchitecture()</li>
  512. </ul></li>
  513. <li><strong>LL CRC</strong> driver
  514. <ul>
  515. <li>Rectified <span class="citation" data-cites="brief">@brief</span> of
  516. LL_CRC_GetOutputDataReverseMode() API</li>
  517. </ul></li>
  518. <li><strong>LL LPUART</strong> driver
  519. <ul>
  520. <li>Remove all reference of TXFECF bit unavailable for LPUART</li>
  521. </ul></li>
  522. <li><strong>LL RCC</strong> driver
  523. <ul>
  524. <li>Add missing API: LL_RCC_PLL_IsEnabledDomain_ADC,
  525. LL_RCC_PLL_IsEnabledDomain_RNG, LL_RCC_PLL_IsEnabledDomain_I2S,
  526. LL_RCC_PLL_IsEnabledDomain_SYS</li>
  527. <li>Add check of PLL enable bit when a peripheral using PPL P or PLL
  528. Q</li>
  529. </ul></li>
  530. <li><strong>LL RNG</strong> driver
  531. <ul>
  532. <li>Fix RNG_HTCFG constant for NIST compliance</li>
  533. </ul></li>
  534. <li><strong>Utils </strong> driver
  535. <ul>
  536. <li>Fix LL_PLL_ConfigSystemClock_HSE to take into account the setting of
  537. RCC_CR_HSEPRE when computing pllrfreq<br />
  538. </li>
  539. </ul></li>
  540. </ul>
  541. <h2 id="known-limitations-2">Known Limitations</h2>
  542. <p>None</p>
  543. <h2 id="development-toolchains-and-compilers-2">Development Toolchains
  544. and Compilers</h2>
  545. <ul>
  546. <li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
  547. <li>RealView Microcontroller Development Kit (MDK-ARM) toolchain
  548. V5.31</li>
  549. <li>STM32CubeIDE 1.9.0 (native GNU ARM 10.3-2021-10 or optional GNU ARM
  550. 9-2020-q2-update)</li>
  551. </ul>
  552. <h2 id="supported-devices-and-boards-2">Supported Devices and
  553. boards</h2>
  554. <p>Supported Devices:</p>
  555. <ul>
  556. <li>STM32WL55xx</li>
  557. <li>STM32WL54xx</li>
  558. <li>STM32WLE5xx</li>
  559. <li>STM32WLE4xx</li>
  560. </ul>
  561. <h2 id="backward-compatibility-2">Backward Compatibility</h2>
  562. <p>Not applicable</p>
  563. <h2 id="dependencies-2">Dependencies</h2>
  564. <p>None</p>
  565. <p><br />
  566. </p>
  567. </div>
  568. </div>
  569. <div class="collapse">
  570. <input type="checkbox" id="collapse-section2" aria-hidden="true">
  571. <label for="collapse-section2" aria-hidden="true"><strong>V1.1.0 /
  572. 16-June-2021</strong></label>
  573. <div>
  574. <h2 id="main-changes-3">Main Changes</h2>
  575. <ul>
  576. <li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to
  577. include latest corrections</li>
  578. <li>Update of HAL SMBUS driver to introduce fast mode and fast mode plus
  579. <ul>
  580. <li>Add extension files stm32wlxx_hal_smbus_ex.h/.c for new APIs:
  581. <ul>
  582. <li><em>HAL_SMBUSEx_EnableFastModePlus()</em></li>
  583. <li><em>HAL_SMBUSEx_DisableFastModePlus()</em></li>
  584. </ul></li>
  585. </ul></li>
  586. </ul>
  587. <h2 id="contents-3">Contents</h2>
  588. <h3 id="hal-drivers-updates-3"><strong>HAL Drivers</strong> updates</h3>
  589. <ul>
  590. <li><strong>HAL ADC</strong> driver
  591. <ul>
  592. <li>Update CFGR2 oversampling bitfields conditionally to oversampling
  593. enable</li>
  594. <li>Update timeout mechanism to avoid false timeout detection in case of
  595. preemption</li>
  596. <li>Update wait_loop_index computation so delay in us is always
  597. multiplicated by at least value “1”</li>
  598. </ul></li>
  599. <li><strong>HAL COMP</strong> driver
  600. <ul>
  601. <li>Update wait_loop_index computation so delay in us is always
  602. multiplicated by at least value “1”</li>
  603. </ul></li>
  604. <li><strong>HAL CORTEX</strong> driver
  605. <ul>
  606. <li>Disable the smallest MPU region sizes (32B, 64B, 128B) in the M0+
  607. context</li>
  608. </ul></li>
  609. <li><strong>HAL CRYP</strong> driver
  610. <ul>
  611. <li>Update HAL_CRYP_SetConfig() and HAL_CRYP_GetConfig() APIs to set/get
  612. the continent of KeyIVConfigSkip correctly</li>
  613. <li>Resolve interrupt mode related GCM decryption issue causing wrong
  614. computation of decryption size</li>
  615. <li>Update HAL_CRYP_InCpltCallback() API to fix an incorrect condition
  616. call at resumption time</li>
  617. <li>Update CRYP_AESCCM_Process_IT() to fix incorrect CCM header length
  618. management when data are fed to the peripheral under interrupt</li>
  619. </ul></li>
  620. <li><strong>HAL EXTI</strong> driver
  621. <ul>
  622. <li>Update HAL_EXTI_GetConfigLine() to set default configuration value
  623. of Trigger and GPIOSel before checking each corresponding register</li>
  624. </ul></li>
  625. <li><strong>HAL GPIO</strong> driver
  626. <ul>
  627. <li>Update HAL_GPIO_Init() API to avoid the configuration of PUPDR
  628. register when Analog mode is selected</li>
  629. </ul></li>
  630. <li><strong>HAL HSEM</strong> driver
  631. <ul>
  632. <li>Update SemID comment related to the number of semaphores</li>
  633. </ul></li>
  634. <li><strong>HAL I2C</strong> driver
  635. <ul>
  636. <li>Updated I2C_IsAcknowledgeFailed() to avoid keeping I2C in busy state
  637. if NACK is received after transmitting register address</li>
  638. </ul></li>
  639. <li><strong>HAL IRDA</strong> driver
  640. <ul>
  641. <li>Fixed typos in the IRDA State definition description</li>
  642. </ul></li>
  643. <li><strong>HAL IWDG</strong> driver
  644. <ul>
  645. <li>Updated HAL_IWDG_Init() API in order to fix HAL_GetTick() timeout
  646. vulnerability issue</li>
  647. </ul></li>
  648. <li><strong>HAL LPTIM</strong> driver
  649. <ul>
  650. <li>Update HAL_LPTIM_Init() API implementation to configure digital
  651. filter for external clock when LPTIM is clocked by an internal clock
  652. source</li>
  653. </ul></li>
  654. <li><strong>HAL PWR</strong> driver
  655. <ul>
  656. <li>Correct HAL_PWREx_DisableInternalWakeUpLine() to update CM0+
  657. register</li>
  658. </ul></li>
  659. <li><strong>HAL RCC</strong> driver
  660. <ul>
  661. <li>Update definition of IS_RCC_OSCILLATORTYPE() macro</li>
  662. <li>Update IS_RCC_PERIPHCLOCK() macro definition depending on targeted
  663. derivative</li>
  664. <li>Add new API HAL_RCC_GetResetSource() to get all reset sources and
  665. clear flags for next reset</li>
  666. </ul></li>
  667. <li><strong>HAL RNG</strong> driver
  668. <ul>
  669. <li>Update timeout mechanism to avoid false timeout detection in case of
  670. preemption</li>
  671. </ul></li>
  672. <li><strong>HAL RTC</strong> driver
  673. <ul>
  674. <li>Update HAL_RTC_DeactivateAlarm() to fix issue where Alarm Autoclear
  675. remained activated after deactivating alarm</li>
  676. <li>Update HAL_RTCEx_SetTimeStamp_IT() to avoid the call of TimeStamp
  677. callback during the setting of the TimeStamp</li>
  678. <li>Update assertions in HAL_RTC_SetAlarm() and HAL_RTC_SetAlarm_IT() to
  679. allow user to unset some Alarm parameters when AlarmMask is set</li>
  680. <li>Update HAL_RTC_DeactivateAlarm() to clear Alarm Flag</li>
  681. <li>Update HAL_RTCEx_DeactivateTimeStamp() to clear TimeStamp flag</li>
  682. <li>Update HAL_RTCEx_DeactivateInternalTimeStamp() to clear Internal
  683. TimeStamp flag
  684. <ul>
  685. <li>The flag is cleared only if TSOVF &amp; TSE are set to 0</li>
  686. </ul></li>
  687. <li>Update HAL_RTCEx_DeactivateWakeUpTimer() to clear WakeUpTimer
  688. flag</li>
  689. <li>Update HAL_RTCEx_DeactivateSSRU() to clear SSR Underflow flag</li>
  690. <li>Update HAL_RTC_WaitForSynchro() to fix issue to clear RSF flag</li>
  691. </ul></li>
  692. <li><strong>HAL SMARTCARD</strong> driver
  693. <ul>
  694. <li>Fixed typos in the SMARTCARD State definition description</li>
  695. </ul></li>
  696. <li><strong>HAL SMBUS</strong> driver
  697. <ul>
  698. <li>Add support for Fast Mode Plus to be SMBUS Rev3 compliant:
  699. <ul>
  700. <li>Add HAL_SMBUSEx_EnableFastModePlus() and
  701. HAL_SMBUSEx_DisableFastModePlus() APIs to manage Fm+</li>
  702. </ul></li>
  703. </ul></li>
  704. <li><strong>HAL SPI</strong> driver
  705. <ul>
  706. <li>Update in SPI_WaitFifoStateUntilTimeout() to fix code optimization
  707. issue</li>
  708. <li>Update to fix MISRA-C 2012 Rule-13.2 issue</li>
  709. </ul></li>
  710. <li><strong>HAL SUBGHZ</strong> driver
  711. <ul>
  712. <li>Update HAL_Delay() by a polling loop to avoid blocking situation in
  713. case of Systick is mapped on Tick</li>
  714. <li>Update HAL_SUBGHZ_DeInit() to check RF Busy bit and deassert the
  715. reset signal on RF side</li>
  716. </ul></li>
  717. <li><strong>HAL TIM</strong> driver
  718. <ul>
  719. <li>Update HAL_TIMEx_OnePulseN_Start and HAL_TIMEx_OnePulseN_Stop
  720. (pooling and IT mode) to take into consideration all OutputChannel
  721. parameters</li>
  722. <li>Correct CodeSpell typos in HAL TIM drivers</li>
  723. <li>Update timeout mechanism to avoid false timeout detection in case of
  724. preemption</li>
  725. <li>Update input capture measurement in DMA mode to avoid zero return
  726. values at high frequencies</li>
  727. </ul></li>
  728. <li><strong>HAL UART</strong> driver
  729. <ul>
  730. <li>Remove an invalid FIFO mode configuration from UART_SetConfig() as
  731. it is not is not member of UART_InitTypeDef Structure</li>
  732. <li>Update HAL_UART_IRQHandler() API to handle receiver timeout
  733. interrupt
  734. <ul>
  735. <li>Update UART receive processes (IT and DMA) to handle the UART
  736. receive’s timeout interrupt</li>
  737. </ul></li>
  738. <li>Update arrays definition to be declared as static const</li>
  739. <li>Fix erroneous UART’s handle state in case of error returned after
  740. DMA reception start within UART_Start_Receive_DMA()</li>
  741. <li>Update UART ReceptionType management in case of ReceptionToIdle API
  742. are called from RxEvent callback</li>
  743. <li>Handling of UART concurrent register access in case of race
  744. condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
  745. </ul></li>
  746. </ul>
  747. <p><br />
  748. </p>
  749. <h3 id="ll-drivers-updates-3"><strong>LL Drivers</strong> updates</h3>
  750. <ul>
  751. <li><strong>LL RCC</strong> driver
  752. <ul>
  753. <li>Private functions made static</li>
  754. </ul></li>
  755. <li><strong>LL RTC</strong> driver
  756. <ul>
  757. <li>Fix wrong reference of RTC instance in LL_RTC_TIME_Init() and
  758. LL_RTC_DATE_Init() functions</li>
  759. </ul></li>
  760. <li><strong>LL SPI</strong> driver
  761. <ul>
  762. <li>Updated to set the FRXTH bit for 8bit data in LL_SPI_Init() API</li>
  763. <li>Update LL_SPI_TransmitData8() to avoid casting the result to 8
  764. bits</li>
  765. </ul></li>
  766. <li><strong>LL TIM</strong> driver
  767. <ul>
  768. <li>Updated LL_TIM_GetCounterMode() API to return the correct counter
  769. mode</li>
  770. <li>Update reversed description of TIM_LL_EC_ONEPULSEMODE One Pulse
  771. Mode</li>
  772. </ul></li>
  773. <li><strong>LL LPUART</strong> driver
  774. <ul>
  775. <li>Handling of UART concurrent register access in case of race
  776. condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
  777. </ul></li>
  778. <li><strong>LL USART</strong> driver
  779. <ul>
  780. <li>Handling of UART concurrent register access in case of race
  781. condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
  782. <li>LL_USART_ClockInit now supports clock phase and clock polarity
  783. configuration for SPI_Slave mode</li>
  784. <li>Remove useless check on maximum BRR value by removing
  785. IS_LL_USART_BRR_MAX() macro</li>
  786. </ul></li>
  787. </ul>
  788. <p><br />
  789. </p>
  790. <h2 id="known-limitations-3">Known Limitations</h2>
  791. <p>None</p>
  792. <h2 id="development-toolchains-and-compilers-3">Development Toolchains
  793. and Compilers</h2>
  794. <ul>
  795. <li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
  796. <li>RealView Microcontroller Development Kit (MDK-ARM) toolchain
  797. V5.31</li>
  798. <li>STM32CubeIDE 1.7.0</li>
  799. </ul>
  800. <h2 id="supported-devices-and-boards-3">Supported Devices and
  801. boards</h2>
  802. <p>Supported Devices:</p>
  803. <ul>
  804. <li>STM32WL55xx</li>
  805. <li>STM32WL54xx</li>
  806. <li>STM32WLE5xx</li>
  807. <li>STM32WLE4xx</li>
  808. </ul>
  809. <h2 id="backward-compatibility-3">Backward Compatibility</h2>
  810. <p>Not applicable</p>
  811. <h2 id="dependencies-3">Dependencies</h2>
  812. <p>None</p>
  813. <p><br />
  814. </p>
  815. </div>
  816. </div>
  817. <div class="collapse">
  818. <input type="checkbox" id="collapse-section1" aria-hidden="true">
  819. <label for="collapse-section1" aria-hidden="true"><strong>V1.0.0 /
  820. 28-October-2020</strong></label>
  821. <div>
  822. <h2 id="main-changes-4">Main Changes</h2>
  823. <p><strong>First Official Release</strong></p>
  824. <h2 id="contents-4">Contents</h2>
  825. <p>First official release of LL / HAL Drivers for STM32WLxx series.</p>
  826. <h2 id="known-limitations-4">Known Limitations</h2>
  827. <p>None</p>
  828. <h2 id="development-toolchains-and-compilers-4">Development Toolchains
  829. and Compilers</h2>
  830. <ul>
  831. <li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
  832. <li>RealView Microcontroller Development Kit (MDK-ARM) toolchain
  833. V5.28</li>
  834. <li>STM32CubeIDE 1.5.0</li>
  835. </ul>
  836. <h2 id="supported-devices-and-boards-4">Supported Devices and
  837. boards</h2>
  838. <p>Supported Devices:</p>
  839. <ul>
  840. <li>STM32WL55xx</li>
  841. <li>STM32WL54xx</li>
  842. <li>STM32WLE5xx</li>
  843. <li>STM32WLE4xx</li>
  844. </ul>
  845. <h2 id="backward-compatibility-4">Backward Compatibility</h2>
  846. <p>Not applicable</p>
  847. <h2 id="dependencies-4">Dependencies</h2>
  848. <p>None</p>
  849. <p><br />
  850. </p>
  851. </div>
  852. </div>
  853. </section>
  854. </div>
  855. <footer class="sticky">
  856. <div class="columns">
  857. <div class="column" style="width:95%;">
  858. <p>For complete documentation on STM32WLxx, visit: <a
  859. href="http://www.st.com/stm32wl">www.st.com/stm32wl</a></p>
  860. <p><em>This release note uses up to date web standards and, for this
  861. reason, should not be opened with Internet Explorer but preferably with
  862. popular browsers such as Google Chrome, Mozilla Firefox, Opera or
  863. Microsoft Edge.</em></p>
  864. </div><div class="column" style="width:5%;">
  865. <p><abbr title="Based on template cx626901 version 2.0">Info</abbr></p>
  866. </div>
  867. </div>
  868. </footer>
  869. </body>
  870. </html>