历史上的今天
返回首页

历史上的今天

今天是:2024年09月14日(星期六)

正在发生

2018年09月14日 | STM32 USB学习笔记2

2018-09-14 来源:eefocus

主机环境:Windows 7 SP1

开发环境:MDK5.14

目标板:STM32F103C8T6

开发库:STM32F1Cube库和STM32_USB_Device_Library


STM32Cube库中提供了一些有关USB的例程,在其工程目录下的Applications目录中,这里打开STM3210E_EVAL目录,可以看到如下例程:


这里选取一个简单的例子CDC_Standalone,为一个USB通信例程,具体实现是一个USB转串口的功能,相当于USB串口线。把示例里面的inc和src目录下的文件拷贝到新建工程中,这里是把跟usb通信相关的文件放到了vcp目录下。文件目录结构如下:


其中BSP目录很简单,由于所购买的单板只用到了USB,UART模块以及一个LED灯,原理图如下:


其中PA15引脚连接了一个LED灯,如下:


因此在stm32f103_demo文件中只添加了led的操作,源文件如下:


/**

  ******************************************************************************

  * @file    stm32f103_demo.c

  * @author  MCD Application Team

  * @version V6.0.0

  * @date    13-October-2015

  * @brief   This file provides a set of firmware functions to manage Leds, 

  *          for STM32F103_DEMO

  ******************************************************************************

  * @attention

  *

  *

© COPYRIGHT(c) 2014 STMicroelectronics

  *

  * Redistribution and use in source and binary forms, with or without modification,

  * are permitted provided that the following conditions are met:

  *   1. Redistributions of source code must retain the above copyright notice,

  *      this list of conditions and the following disclaimer.

  *   2. Redistributions in binary form must reproduce the above copyright notice,

  *      this list of conditions and the following disclaimer in the documentation

  *      and/or other materials provided with the distribution.

  *   3. Neither the name of STMicroelectronics nor the names of its contributors

  *      may be used to endorse or promote products derived from this software

  *      without specific prior written permission.

  *

  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE

  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  *

  ******************************************************************************

  */

  

/* Includes ------------------------------------------------------------------*/

#include "STM32f103_demo.h"

 

/** @addtogroup BSP

  * @{

  */ 

 

/** @defgroup STM32F103_DEMO STM32F103-DEMO

  * @{

  */ 

 

/** @defgroup STM32F103_DEMO_Common STM32F103-DEMO Common

  * @{

  */ 

 

/** @defgroup STM32F103_DEMO_Private_TypesDefinitions Private Types Definitions

  * @{

  */ 

 

/**

  * @}

  */ 

 

/** @defgroup STM32F103_DEMO_Private_Defines Private Defines

  * @{

  */ 

 

/**

 * @brief STM32103 EVAL BSP Driver version number V6.0.0

   */

#define __STM32F103_DEMO_BSP_VERSION_MAIN       (0x06) /*!< [31:24] main version */

#define __STM32F103_DEMO_BSP_VERSION_SUB1       (0x00) /*!< [23:16] sub1 version */

#define __STM32F103_DEMO_BSP_VERSION_SUB2       (0x00) /*!< [15:8]  sub2 version */

#define __STM32F103_DEMO_BSP_VERSION_RC         (0x00) /*!< [7:0]  release candidate */

#define __STM32F103_DEMO_BSP_VERSION            ((__STM32F103_DEMO_BSP_VERSION_MAIN << 24)\

                                               |(__STM32F103_DEMO_BSP_VERSION_SUB1 << 16)\

                                               |(__STM32F103_DEMO_BSP_VERSION_SUB2 << 8 )\

                                               |(__STM32F103_DEMO_BSP_VERSION_RC))

 

/**

  * @}

  */

 

 

/** @defgroup STM32F103_DEMO_Private_Variables Private Variables

  * @{

  */ 

/**

 * @brief LED variables

 */

GPIO_TypeDef* LED_PORT[LEDn] = {LED_GPIO_PORT};

 

const uint16_t LED_PINS[LEDn] = {LED_PIN};

 

/**

  * @brief  This method returns the STM32103 EVAL BSP Driver revision

  * @retval version : 0xXYZR (8bits for each decimal, R for RC)

  */

uint32_t BSP_GetVersion(void)

{

  return __STM32F103_DEMO_BSP_VERSION;

}

 

/**

  * @brief  Configures LED GPIO.

  * @param  Led: Specifies the Led to be configured. 

  *   This parameter can be one of following parameters:

  *     @arg LED

  * @retval None

  */

void BSP_LED_Init(Led_TypeDef Led)

{

GPIO_InitTypeDef  gpioinitstruct = {0};

 

/* Enable the GPIO_LED clock */

LED_GPIO_CLK_ENABLE();

__HAL_RCC_AFIO_CLK_ENABLE();

__HAL_AFIO_REMAP_SWJ_DISABLE();

 

/* Configure the GPIO_LED pin */

gpioinitstruct.Pin    = LED_PINS[Led];

gpioinitstruct.Mode   = GPIO_MODE_OUTPUT_PP;

gpioinitstruct.Pull   = GPIO_NOPULL;

gpioinitstruct.Speed  = GPIO_SPEED_HIGH;

 

HAL_GPIO_Init(LED_PORT[Led], &gpioinitstruct);

 

HAL_GPIO_WritePin(LED_PORT[Led], LED_PINS[Led], GPIO_PIN_RESET);

}

 

/**

  * @brief  Turns selected LED On.

  * @param  Led: Specifies the Led to be set on. 

  *   This parameter can be one of following parameters:

  *     @arg LED

  * @retval None

  */

void BSP_LED_On(Led_TypeDef Led)

{

  HAL_GPIO_WritePin(LED_PORT[Led], LED_PINS[Led], GPIO_PIN_RESET);

}

 

/**

  * @brief  Turns selected LED Off.

  * @param  Led: Specifies the Led to be set off. 

  *   This parameter can be one of following parameters:

  *     @arg LED

  * @retval None

  */

void BSP_LED_Off(Led_TypeDef Led)

{

  HAL_GPIO_WritePin(LED_PORT[Led], LED_PINS[Led], GPIO_PIN_SET);

}

 

/**

  * @brief  Toggles the selected LED.

  * @param  Led: Specifies the Led to be toggled. 

  *   This parameter can be one of following parameters:

  *     @arg LED

  * @retval None

  */

void BSP_LED_Toggle(Led_TypeDef Led)

{

  HAL_GPIO_TogglePin(LED_PORT[Led], LED_PINS[Led]);

}

 

/**

  * @}

  */    

  

/**

  * @}

  */    

  

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

 


头文件如下:


/**

  ******************************************************************************

  * @file    stm32f103_demo.h

  * @author  MCD Application Team

  * @version V6.0.0

  * @date    13-October-2015

  * @brief   This file contains definitions for STM32F103_DEMO's LEDs, 

  *          hardware resources.

  ******************************************************************************

  * @attention

  *

  *

© COPYRIGHT(c) 2014 STMicroelectronics

  *

  * Redistribution and use in source and binary forms, with or without modification,

  * are permitted provided that the following conditions are met:

  *   1. Redistributions of source code must retain the above copyright notice,

  *      this list of conditions and the following disclaimer.

  *   2. Redistributions in binary form must reproduce the above copyright notice,

  *      this list of conditions and the following disclaimer in the documentation

  *      and/or other materials provided with the distribution.

  *   3. Neither the name of STMicroelectronics nor the names of its contributors

  *      may be used to endorse or promote products derived from this software

  *      without specific prior written permission.

  *

  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE

  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  *

  ******************************************************************************

  */

 

/* Define to prevent recursive inclusion -------------------------------------*/

#ifndef __STM32F103_DEMO_H

#define __STM32F103_DEMO_H

 

#ifdef __cplusplus

 extern "C" {

#endif 

 

/** @addtogroup BSP

  * @{

  */ 

 

/** @addtogroup STM32F103_DEMO

  * @{

  */ 

 

/* Includes ------------------------------------------------------------------*/

#include "stm32f1xx_hal.h"

 

/** @addtogroup STM32F103_DEMO_Common STM3210E-EVAL Common

  * @{

  */ 

 

/** @defgroup STM32F103_DEMO_Exported_Types Exported Types

  * @{

  */

 

/**

 * @brief LED Types Definition

 */

typedef enum 

{

  LED = 0,

 

  LED_GREEN  = LED,

 

} Led_TypeDef;

 

/**

  * @}

  */ 

 

/** @defgroup STM32F103_DEMO_Exported_Constants Exported Constants

  * @{

  */ 

 

/** 

  * @brief  Define for STM32F103_DEMO board  

  */ 

#if !defined (USE_STM32F103_DEMO)

 #define USE_STM32F103_DEMO

#endif

  

/** @addtogroup STM32F103_DEMO_LED

  * @{

  */

#define LEDn                             1

 

#define LED_PIN                         GPIO_PIN_15             /* PA.15*/

#define LED_GPIO_PORT                   GPIOA

#define LED_GPIO_CLK_ENABLE()           __HAL_RCC_GPIOA_CLK_ENABLE()

#define LED_GPIO_CLK_DISABLE()          __HAL_RCC_GPIOA_CLK_DISABLE()

 

/** @addtogroup STM32F103_DEMO_Exported_Functions

  * @{

  */ 

uint32_t                BSP_GetVersion(void);

void                    BSP_LED_Init(Led_TypeDef Led);

void                    BSP_LED_On(Led_TypeDef Led);

void                    BSP_LED_Off(Led_TypeDef Led);

void                    BSP_LED_Toggle(Led_TypeDef Led);

 

/**

  * @}

  */

  

/**

  * @}

  */

  

#ifdef __cplusplus

}

#endif

  

#endif /* __STM32F103_DEMO_H */

 

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/


其他文件几乎不做改动,只需把引用stm32f10e_eval.h头文件的内容改为stm32f13_demo.h即可。需要注意的是PA15口在STM32正常运行时是用作调试接口的,因此需要禁止调试功能,这在BSP_LED_Init()函数中有体现,编译代码并下载到目标板。

在运行代码之前我们需要安装一个usb串口驱动:VCP_1.40_Setup,这个可以在ST官网上找到,有了它我们的USB在可以在主机上识别成一个串口,并可以使用串口操作,硬件连接完毕后我们可以通过设备管理器来查看到有两个串口,如下:


COM5是单板实际的串口,而COM6看名字就晓得了,是USB虚拟出来的一个串口,打开两个串口终端,可以实现串口通信了,如下:


从COM5发送的信息可以在COM6中收到,同时从COM6中发送的信息可以在COM5中收到。同时该DEMO是支持串口波特率的修改的,我们将COM6和COM5的波特率改为57600,继续进行通信,依然是可以的,如下:



当然除去波特率以外,数据位、停止位、校验位都是可以正常修改的,有了这些直观性的功能描述会方便我们理解USB CDC类的使用,接下来就一步步分析一下VCP的代码实现吧。

首先分析物理硬件的处理吧,即stm32f1xx_hal_msp,c文件,该文件很简单只是初始化UART的IO资源,



/**

  ******************************************************************************

  * @file    USB_Device/CDC_Standalone/Src/stm32f1xx_hal_msp.c

  * @author  MCD Application Team

  * @version V1.2.0

  * @date    31-July-2015

  * @brief   HAL MSP module.

  ******************************************************************************

  * @attention

  *

  *

© COPYRIGHT(c) 2015 STMicroelectronics

  *

  * Redistribution and use in source and binary forms, with or without modification,

  * are permitted provided that the following conditions are met:

  *   1. Redistributions of source code must retain the above copyright notice,

  *      this list of conditions and the following disclaimer.

  *   2. Redistributions in binary form must reproduce the above copyright notice,

  *      this list of conditions and the following disclaimer in the documentation

  *      and/or other materials provided with the distribution.

  *   3. Neither the name of STMicroelectronics nor the names of its contributors

  *      may be used to endorse or promote products derived from this software

  *      without specific prior written permission.

  *

  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE

  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  *

  ******************************************************************************

  */

 

/* Includes ------------------------------------------------------------------*/

#include "main.h"

 

/** @addtogroup USBD_USER

* @{

*/

 

/** @defgroup USBD_USR_MAIN

  * @brief This file is the CDC application main file

  * @{

  */

 

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private variables ---------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/

 

/**

  * @brief UART MSP Initialization

  *        This function configures the hardware resources used in this example:

  *           - Peripheral's clock enable

  *           - Peripheral's GPIO Configuration

  *           - DMA configuration for transmission request by peripheral

  *           - NVIC configuration for DMA interrupt request enable

  * @param huart: UART handle pointer

  * @retval None

  */

void HAL_UART_MspInit(UART_HandleTypeDef *huart)

{

  static DMA_HandleTypeDef hdma_tx;

  GPIO_InitTypeDef  GPIO_InitStruct;

 

  /*##-1- Enable peripherals and GPIO Clocks #################################*/

  /* Enable GPIO clock */

  USARTx_TX_GPIO_CLK_ENABLE();

  USARTx_RX_GPIO_CLK_ENABLE();

 

  /* Enable USARTx clock */

  USARTx_CLK_ENABLE();

 

  /* Enable DMA clock */

  DMAx_CLK_ENABLE();

 

  /*##-2- Configure peripheral GPIO ##########################################*/

  /* UART TX GPIO pin configuration  */

  GPIO_InitStruct.Pin       = USARTx_TX_PIN;

  GPIO_InitStruct.Mode      = GPIO_MODE_AF_PP;

  GPIO_InitStruct.Pull      = GPIO_PULLUP;

  GPIO_InitStruct.Speed     = GPIO_SPEED_HIGH;

 

  HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);

 

  /* UART RX GPIO pin configuration  */

  GPIO_InitStruct.Pin = USARTx_RX_PIN;

  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

  HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);

  

  /*##-3- Configure the NVIC for UART ########################################*/   

  HAL_NVIC_SetPriority(USARTx_IRQn, 4, 0);

  HAL_NVIC_EnableIRQ(USARTx_IRQn);

 

  /*##-4- Configure the DMA channels ##########################################*/

  /* Configure the DMA handler for Transmission process */

  hdma_tx.Instance                 = USARTx_TX_DMA_STREAM;

  hdma_tx.Init.Direction           = DMA_MEMORY_TO_PERIPH;

  hdma_tx.Init.PeriphInc           = DMA_PINC_DISABLE;

  hdma_tx.Init.MemInc              = DMA_MINC_ENABLE;

  hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;

  hdma_tx.Init.MemDataAlignment    = DMA_MDATAALIGN_BYTE;

  hdma_tx.Init.Mode                = DMA_NORMAL;

  hdma_tx.Init.Priority            = DMA_PRIORITY_LOW;

 

  HAL_DMA_Init(&hdma_tx);

  

  /* Associate the initialized DMA handle to the UART handle */

  __HAL_LINKDMA(huart, hdmatx, hdma_tx);

  

  /*##-5- Configure the NVIC for DMA #########################################*/

  /* NVIC configuration for DMA transfer complete interrupt (USARTx_TX) */

  HAL_NVIC_SetPriority(USARTx_DMA_TX_IRQn, 5, 0);

  HAL_NVIC_EnableIRQ(USARTx_DMA_TX_IRQn);

  

  /*##-6- Enable TIM peripherals Clock #######################################*/

  TIMx_CLK_ENABLE();

  

  /*##-7- Configure the NVIC for TIMx ########################################*/

  /* Set Interrupt Group Priority */ 

  HAL_NVIC_SetPriority(TIMx_IRQn, 5, 0);

  

  /* Enable the TIMx global Interrupt */

  HAL_NVIC_EnableIRQ(TIMx_IRQn);

}

 

/**

  * @brief UART MSP De-Initialization

  *        This function frees the hardware resources used in this example:

  *          - Disable the Peripheral's clock

  *          - Revert GPIO, DMA and NVIC configuration to their default state

  * @param huart: UART handle pointer

  * @retval None

  */

void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)

{

  /*##-1- Reset peripherals ##################################################*/

  USARTx_FORCE_RESET();

  USARTx_RELEASE_RESET();

 

  /*##-2- Disable peripherals and GPIO Clocks #################################*/

  /* Configure UART Tx as alternate function  */

  HAL_GPIO_DeInit(USARTx_TX_GPIO_PORT, USARTx_TX_PIN);

  /* Configure UART Rx as alternate function  */

  HAL_GPIO_DeInit(USARTx_RX_GPIO_PORT, USARTx_RX_PIN);

 

  /*##-3- Disable the NVIC for UART ##########################################*/

  HAL_NVIC_DisableIRQ(USARTx_IRQn);

  

  /*##-4- Disable the NVIC for DMA ###########################################*/

  HAL_NVIC_DisableIRQ(USARTx_DMA_TX_IRQn);

  

  /*##-5- Reset TIM peripheral ###############################################*/

  TIMx_FORCE_RESET();

  TIMx_RELEASE_RESET();

}

 

/**

  * @}

  */

 

/**

  * @}

  */

 

/**

  * @}

  */

 

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/


这里使能了3个中断:UART1中断、DMA1通道4(UART_TX)中断、TIM3定时器中断。这些IO资源的初始化相对简单,清晰易懂,这里之所以初始化UARTIO资源是因为本DEMO实现的是USB转串口的功能,即把从UART口收到的数据从USB口发送出去,把从USB口收到的数据从UART口发送出去。有关USB口的IO资源的初始化是在另一个文件中。其中定时器的作用在另外的文件中有体现,虽然不清楚为啥把定时器的使能放在这里而不是跟它的初始化放在一起。。。

在通常情况下USB设备在D+、D-加上上拉电阻来检测设备的连接和断开事件,在例程中是使用一个IO来动态地拉高拉低,而我这里所购买的单板是没有接IO口的直接使用的1.5K上拉电阻,因此不再需要单独的IO口控制,如图:


把usbd_conf.c文件中有关上拉电阻控制的代码去掉即可,涉及到HAL_PCD_MspInit()函数和HAL_PCDEx_SetConnectionState()两个函数,修改如下:



/**

  * @brief  Initializes the PCD MSP.

  * @param  hpcd: PCD handle

  * @retval None

  */

void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd)

{

  GPIO_InitTypeDef  GPIO_InitStruct;

   

  /* Enable the GPIOA clock */

  __HAL_RCC_GPIOA_CLK_ENABLE();

  

  /* Configure USB DM/DP pins */

  GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12);

  GPIO_InitStruct.Mode = GPIO_MODE_AF_INPUT;

  GPIO_InitStruct.Pull = GPIO_PULLUP;

  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  

  /* Enable USB Clock */

  __HAL_RCC_USB_CLK_ENABLE();

    

  /* Set USB Interrupt priority */

  HAL_NVIC_SetPriority(USB_LP_CAN1_RX0_IRQn, 7, 0);

 

  /* Enable USB Interrupt */

  HAL_NVIC_EnableIRQ(USB_LP_CAN1_RX0_IRQn);

}

 

/**

  * @brief  Software Device Connection

  * @param  hpcd: PCD handle

  * @param  state: connection state (0 : disconnected / 1: connected)

  * @retval None

  */

void HAL_PCDEx_SetConnectionState(PCD_HandleTypeDef *hpcd, uint8_t state)

{

}


最后稍微修改下main函数中的Toggle_Leds()函数把累加计数器改为增加到1000后清零,即每隔1S翻转一次,如下:


/**

  * @brief  Toggle LEDs to shows user input state.

  * @param  None

  * @retval None

  */

void Toggle_Leds(void)

{

static uint32_t ticks;

 

if (ticks++ == 1000)

{

BSP_LED_Toggle(LED);

ticks = 0;

}

}


至此基本代码修改完毕,剩下的就是分析代码了。


推荐阅读

史海拾趣

意瑞(COSEMITECH)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,意瑞半导体的市场影响力逐渐扩大。其高集成度、高性能的芯片广泛应用于国内外主流OEM及全球知名Tier1厂商。在汽车电子领域,公司布局了动力总成、车身控制、电源管理和底盘安全等模块,其产品在多家主机厂成功导入并量产,性能超过了国外老牌芯片,成为该品类中本土鲜有的实现汽车市场大批量出货的产品。

Echelon公司的发展小趣事

进入21世纪后,Echelon在智能楼宇领域取得了重大突破。公司凭借其先进的LonWorks技术和能源管理服务方案,成功为多个大型楼宇提供了智能化的能源管理解决方案。这些解决方案不仅提高了楼宇的能源利用效率,还降低了运行成本,赢得了客户的广泛赞誉。Echelon在智能楼宇领域的成功,进一步巩固了其在能源管理市场的领先地位。

Golledge Electronics公司的发展小趣事

Echelon公司成立于上世纪80年代,最初以研发LonWorks技术为核心。LonWorks是一种网络通信协议,用于连接各种智能设备,实现设备间的通信和协作。随着技术的成熟,Echelon开始将LonWorks技术应用于能源管理领域,推出了基于LonWorks的能源管理服务方案。这一创新的服务方案使得Echelon在能源管理市场崭露头角,为公司的后续发展奠定了坚实的基础。

Hirschmann公司的发展小趣事
当外部触发信号作用于TC4013时,定时器开始工作。同时,TC4066根据预设的数字信号状态来调整电路参数(如电阻、电容值),从而改变定时电路的延时时间或输出特性。最终,定时电路根据这些设置输出具有特定脉冲宽度或时间间隔的信号。
Ceramics公司的发展小趣事

“全球陶瓷”公司凭借其卓越的产品质量和国际化战略,成功拓展了海外市场。该公司积极参与国际展览和交流活动,与多国电子企业建立了合作关系。同时,全球陶瓷还针对不同国家和地区的市场需求,推出了定制化的陶瓷电子材料解决方案。这一国际化战略不仅提升了公司的品牌影响力,也为其在全球范围内的业务拓展提供了有力支持。

Bomar Interconnect公司的发展小趣事

在供应链管理方面,Bomar Interconnect公司也进行了一系列优化措施。公司与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可控。同时,公司还加强了对供应链的监控和管理,通过信息化手段提高了供应链的透明度和效率。这些努力不仅降低了公司的采购成本,也提高了供应链的响应速度和灵活性。

问答坊 | AI 解惑

单片机能像读取RAM一样读取FPGA中的数据吗?

单片机AT89C51能像读取RAM一样读取FPGA中的数据吗? 有做过的朋友没有,怎么读,用并口还是串口? 谢谢解答!…

查看全部问答>

200元做个实物,对高手来说毫无难道,呵呵

我做的是球赛计时计分器,要求如下: 本系统通过单片机AT89C51芯片来控制LED七段数码管和矩阵作时间、分数、队名称显示的球赛计时计分系统。本系统具有赛程定时设置、赛程时间暂停、球赛种类的切换、及时刷新甲、乙队双方的成绩以及赛后成绩暂存等 ...…

查看全部问答>

如何在控制面板加上一个背光控制的高级选项?

ADVBACKLIGHT,这个文件源代码是用在控制面板里的,请问怎么样可以使控制面板的背光设置里有一个高级选项?因为默认是没有的!…

查看全部问答>

中文字库数组过大的问题!!!有人提过,但解决是小数组的问题!

每个中文字体结构体定义 typedef struct typFNT_GB16        {        unsigned char index[2];        // 汉字内码索引        unsigned char dot_data[32 ...…

查看全部问答>

哪位大虾有比较好的KEIL或C51的视频教程呀?

哪位大虾有比较好的KEIL,C51视频教程呀,请把网址告诉小弟。万分感激。。。。 帮小弟顶下也有分噢!!…

查看全部问答>

关于stm32和spc3连接的问题

版主,spc和stm32连接时nadv到AlE是不是要接个反相器啊 …

查看全部问答>

stm8s输出比较已——反复思考

以下是输出比较的一段程序,麻烦各位高手看看哪里出错了! #include <STM8S105C_S.h> //unsigned int a; void GPIO_Init(void) { PB_DDR=0XFF; PB_CR1=0XFF; PB_CR2=0XFF; } void clock_init(void) { // CLK_ECKR&=0XFE;//关 ...…

查看全部问答>

我终于回来了,不容易啊

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 前段时间骨折了,做了个手术,现在还在恢复,不方便上网,一直没来坛子,电子大赛也放下了,考研也落下了,辛昕的活动也没参加完,不好意思啊,现在终于可以稍微活动了,唉,还是正常人好,以后要好 ...…

查看全部问答>

DSP开发系统 ICETEK-5100USB V2.0A 仿真器

ICETEK-5100USB V2.0真正兼容TI全系列DSP产品:TMS320C2000/C5000/C6000/VC33;完全通用性,只需更换软件就可以实现所有DSP器件的开发;USB2.0接口,仿真速度快,支持热插拔调试方便,携带方便;支持CCS集成调试环境;支持多DSP同时调试仿真,仿真不占用任何D ...…

查看全部问答>

求低频的压控振荡器

受控频率0.56M~2.8MHz,给个找的方向也行。 [ 本帖最后由 PCB板 于 2012-9-26 20:55 编辑 ]…

查看全部问答>