mameng 发表于 2021-10-24 22:13

【超低功耗STM32U5 IoT探索套件】 STM32U585AII6Q 和EMW3080WIFI模组通讯

<div class='showpostmsg'><p>&nbsp; &nbsp;STM32U5 IoT探索套件和EMW3080WIFI原理图:EMW3080是基于MX1290V2 SOC的单3.3V供电的、集成Wi-Fi和Cortex-M4F MCU的嵌入式Wi-Fi模块,支持浮点运算,Memory、外设接口资源丰富,能满足大部分应用需求和上云的要求。</p>

<p>&nbsp; &nbsp;EMW3080的19脚默认为BOOT功能引脚,烧写固件的时候会使用;PIN23为EasyLink时使用;PIN21/PIN22为调试信息输出UART,开发时一般不使用;PIN21上电时为高电平或悬空;11脚为CHIP_EN,做复位管脚使用,不用时要悬空;PIN9、PIN10为另一组UART,这组UART可以通过AT指令开发EMW3080B模组。</p>

<p>&nbsp;&nbsp;</p>

<p>&nbsp; &nbsp;</p>

<p>关键配置和SPI初始化:</p>

<pre>
<code>static void MX_SPI2_Init(void)
{

/* USER CODE BEGIN SPI2_Init 0 */

/* USER CODE END SPI2_Init 0 */

SPI_AutonomousModeConfTypeDef HAL_SPI_AutonomousMode_Cfg_Struct = {0};

/* USER CODE BEGIN SPI2_Init 1 */

/* USER CODE END SPI2_Init 1 */
/* SPI2 parameter configuration*/
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 0x7;
hspi2.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
hspi2.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
hspi2.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
hspi2.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hspi2.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
hspi2.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
hspi2.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
hspi2.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
hspi2.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;
hspi2.Init.IOSwap = SPI_IO_SWAP_DISABLE;
hspi2.Init.ReadyMasterManagement = SPI_RDY_MASTER_MANAGEMENT_INTERNALLY;
hspi2.Init.ReadyPolarity = SPI_RDY_POLARITY_HIGH;
if (HAL_SPI_Init(&amp;hspi2) != HAL_OK)
{
    Error_Handler();
}
HAL_SPI_AutonomousMode_Cfg_Struct.TriggerState = SPI_AUTO_MODE_DISABLE;
HAL_SPI_AutonomousMode_Cfg_Struct.TriggerSelection = SPI_GRP1_GPDMA_CH0_TCF_TRG;
HAL_SPI_AutonomousMode_Cfg_Struct.TriggerPolarity = SPI_TRIG_POLARITY_RISING;
if (HAL_SPIEx_SetConfigAutonomousMode(&amp;hspi2, &amp;HAL_SPI_AutonomousMode_Cfg_Struct) != HAL_OK)
{
    Error_Handler();
}
/* USER CODE BEGIN SPI2_Init 2 */
SPI2-&gt;CFG1 |= 0x00000007 &lt;&lt; SPI_CFG1_CRCSIZE_Pos;
/* USER CODE END SPI2_Init 2 */

}</code></pre>

<pre>
<code>static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};

/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOG_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(MXCHIP_NSS_GPIO_Port, MXCHIP_NSS_Pin, GPIO_PIN_SET);

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(MXCHIP_RESET_GPIO_Port, MXCHIP_RESET_Pin, GPIO_PIN_RESET);

/*Configure GPIO pin : MXCHIP_FLOW_Pin */
GPIO_InitStruct.Pin = MXCHIP_FLOW_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(MXCHIP_FLOW_GPIO_Port, &amp;GPIO_InitStruct);

/*Configure GPIO pin : MXCHIP_NOTIFY_Pin */
GPIO_InitStruct.Pin = MXCHIP_NOTIFY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(MXCHIP_NOTIFY_GPIO_Port, &amp;GPIO_InitStruct);

/*Configure GPIO pin : MXCHIP_NSS_Pin */
GPIO_InitStruct.Pin = MXCHIP_NSS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(MXCHIP_NSS_GPIO_Port, &amp;GPIO_InitStruct);

/*Configure GPIO pin : MXCHIP_RESET_Pin */
GPIO_InitStruct.Pin = MXCHIP_RESET_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(MXCHIP_RESET_GPIO_Port, &amp;GPIO_InitStruct);

/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI14_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI14_IRQn);

HAL_NVIC_SetPriority(EXTI15_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(EXTI15_IRQn);

}</code></pre>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2021-10-25 07:27

<p>这个SPI初始化也有点繁琐哦</p>

<p>&nbsp;</p>
页: [1]
查看完整版本: 【超低功耗STM32U5 IoT探索套件】 STM32U585AII6Q 和EMW3080WIFI模组通讯