文档库 最新最全的文档下载
当前位置:文档库 › NuMicro M051系列驱动参考指南

NuMicro M051系列驱动参考指南

NuMicro M051系列驱动参考指南
NuMicro M051系列驱动参考指南

NuMicro M051 系列驱动参考指南V1.00.001

芯片支持: 平台支持:Nuvoton M051系列

NuMicroTM M051 系列驱动参考指南

1. 概述 (11)

1.1. 文档结构 (11)

1.2. 相关文档 (11)

1.3. 缩略语和术语 (11)

1.4. 数据类型定义 (12)

2. SYS 驱动 (13)

2.1. 介绍13

2.2. 时钟模块图 (15)

2.3. 类型定义 (16)

E_SYS_IP_RST (16)

E_SYS_IP_CLK (16)

E_SYS_PLL_CLKSRC (17)

E_SYS_IP_DIV (17)

E_SYS_IP_CLKSRC (17)

E_SYS_CHIP_CLKSRC (17)

E_SYS_PD_TYPE (17)

2.4. 函数18

DrvSYS_ReadProductID (18)

DrvSYS_GetResetSource (18)

DrvSYS_ClearResetSource (19)

DrvSYS_ResetIP (19)

DrvSYS_ResetCPU (20)

DrvSYS_ResetChip (20)

DrvSYS_SelectBODVolt (21)

DrvSYS_SetBODFunction (21)

DrvSYS_EnableBODLowPowerMode (22)

DrvSYS_DisableBODLowPowerMode (23)

DrvSYS_EnableLowVoltReset (23)

DrvSYS_DisableLowVoltReset (24)

DrvSYS_GetBODState (24)

DrvSYS_UnlockProtectedReg (25)

DrvSYS_LockProtectedReg (25)

DrvSYS_IsProtectedRegLocked (26)

DrvSYS_EnablePOR (27)

DrvSYS_DisablePOR (27)

DrvSYS_SetIPClock (28)

DrvSYS_SelectHCLKSource (28)

DrvSYS_SelectSysTickSource (29)

DrvSYS_SelectIPClockSource (30)

DrvSYS_SetClockDivider (31)

DrvSYS_SetOscCtrl (32)

DrvSYS_SetPowerDownWakeUpInt (32)

DrvSYS_EnterPowerDown (33)

DrvSYS_SelectPLLSource (34)

DrvSYS_SetPLLMode (34)

DrvSYS_GetExtClockFreq (35)

DrvSYS_GetPLLContent (35)

DrvSYS_SetPLLContent (36)

DrvSYS_GetPLLClockFreq (37)

DrvSYS_GetHCLKFreq (37)

DrvSYS_Open (38)

DrvSYS_SetFreqDividerOutput (38)

DrvSYS_Delay (39)

DrvSYS_GetChipClockSourceStatus (40)

DrvSYS_GetClockSwitchStatus (40)

DrvSYS_ClearClockSwitchStatus (41)

DrvSYS_GetVersion (41)

3. UART 驱动 (43)

3.3. 常量定义 (44)

3.4. 类型定义 (44)

E_UART_PORT (44)

E_INT_SOURCE (44)

E_DATABITS_SETTINGS (44)

E_PARITY_SETTINGS (44)

E_STOPBITS_SETTINGS (45)

E_FIFO_SETTINGS (45)

E_UART_FUNC (45)

E_MODE_RS485 (45)

3.5. 宏45

_DRVUART_SENDBYTE (45)

_DRVUART_RECEIVEBYTE (46)

_DRVUART_SET_DIVIDER (46)

_DRVUART_RECEIVEAVAILABLE (47)

_DRVUART_WAIT_TX_EMPTY (47)

3.6. 函数48

DrvUART_Open (48)

DrvUART_Close (50)

DrvUART_EnableInt (50)

DrvUART_DisableInt (51)

DrvUART_ClearIntFlag (52)

DrvUART_GetIntStatus (53)

DrvUART_GetCTSInfo (54)

DrvUART_SetRTS (55)

DrvUART_Read (56)

DrvUART_Write (57)

DrvUART_SetFnIRDA (58)

DrvUART_SetFnRS485 (59)

DrvUART_SetFnLIN (60)

DrvUART_GetVersion (61)

4. TIMER/WDT驱动 (62)

4.1. TIMER/WDT介绍 (62)

4.2. TIMER/WDT特性 (62)

4.3. 类型定义 (62)

E_TIMER_CHANNEL (62)

E_TIMER_OPMODE (63)

E_WDT_CMD (63)

E_WDT_INTERVAL (63)

4.4. 函数64

DrvTIMER_Init (64)

DrvTIMER_Open (64)

DrvTIMER_Close (65)

DrvTIMER_SetTimerEvent (65)

DrvTIMER_ClearTimerEvent (66)

DrvTIMER_EnableInt (67)

DrvTIMER_DisableInt (68)

DrvTIMER_GetIntFlag (68)

DrvTIMER_ClearIntFlag (69)

DrvTIMER_Start (69)

DrvTIMER_GetIntTicks (70)

DrvTIMER_ResetIntTicks (70)

DrvTIMER_Delay (71)

DrvTIMER_SetEXTClockFreq (71)

DrvTIMER_GetVersion (72)

DrvWDT_Open (72)

DrvWDT_Close (73)

DrvWDT_InstallISR (74)

DrvWDT_Ioctl (74)

5. GPIO驱动 (76)

5.1. GPIO介绍 (76)

E_DRVGPIO_PORT (76)

E_DRVGPIO_PIN (76)

E_DRVGPIO_EXT_INT_PIN (77)

E_DRVGPIO_IO (77)

E_DRVGPIO_INT_TYPE (77)

E_DRVGPIO_INT_MODE (77)

E_DRVGPIO_DBCLKSRC (77)

E_DRVGPIO_FUNC (77)

5.4. 宏78

_PORT_DOUT (78)

P0[n]_DOUT / P1[n]_DOUT / P2[n]_DOUT / P3[n]_DOUT / P4[n]_DOUT (79)

5.5. 函数79

DrvGPIO_Open (79)

DrvGPIO_Close (80)

DrvGPIO_SetBit (81)

DrvGPIO_GetBit (81)

DrvGPIO_ClrBit (82)

DrvGPIO_SetPortBitsts (83)

DrvGPIO_GetPortBits (83)

DrvGPIO_GetDoutBit (84)

DrvGPIO_GetPortDoutBits (84)

DrvGPIO_SetBitMask (85)

DrvGPIO_GetBitMask (86)

DrvGPIO_ClrBitMask (86)

DrvGPIO_SetPortMask (87)

DrvGPIO_GetPortMask (88)

DrvGPIO_ClrPortMask (88)

DrvGPIO_EnableDebounce (89)

DrvGPIO_DisableDebounce (89)

DrvGPIO_SetDebounceTime (90)

DrvGPIO_GetDebounceSampleCycle (91)

DrvGPIO_EnableInt (91)

DrvGPIO_DisableInt (92)

DrvGPIO_SetIntCallback (93)

DrvGPIO_EnableEINT (94)

DrvGPIO_DisableEINT (95)

DrvGPIO_GetIntStatus (95)

DrvGPIO_InitFunction (96)

DrvGPIO_GetVersion (97)

6. ADC驱动 (98)

6.1. ADC介绍 (98)

6.2. ADC特性 (98)

6.3. 类型定义 (99)

E_ADC_INPUT_MODE (99)

E_ADC_OPERATION_MODE (99)

E_ADC_CLK_SRC (99)

E_ADC_EXT_TRI_COND (99)

E_ADC_CH7_SRC (99)

E_ADC_CMP_CONDITION (99)

6.4. 宏100

_DRVADC_CONV (100)

_DRVADC_GET_ADC_INT_FLAG (100)

_DRVADC_GET_CMP0_INT_FLAG (101)

_DRVADC_GET_CMP1_INT_FLAG (101)

_DRVADC_CLEAR_ADC_INT_FLAG (102)

_DRVADC_CLEAR_CMP0_INT_FLAG (102)

_DRVADC_CLEAR_CMP1_INT_FLAG (102)

6.5. 函数103

DrvADC_Open (103)

DrvADC_Close (104)

DrvADC_SetADCChannel (105)

DrvADC_ConfigADCChannel7 (105)

DrvADC_SetADCInputMode (106)

DrvADC_EnableADCInt (108)

DrvADC_DisableADCInt (109)

DrvADC_EnableADCCmp0Int (110)

DrvADC_DisableADCCmp0Int (111)

DrvADC_EnableADCCmp1Int (111)

DrvADC_DisableADCCmp1Int (112)

DrvADC_GetConversionRate (113)

DrvADC_EnableExtTrigger (113)

DrvADC_DisableExtTrigger (114)

DrvADC_StartConvert (115)

DrvADC_StopConvert (115)

DrvADC_IsConversionDone (116)

DrvADC_GetConversionData (116)

DrvADC_IsDataValid (117)

DrvADC_IsDataOverrun (117)

DrvADC_EnableADCCmp0 (118)

DrvADC_DisableADCCmp0 (119)

DrvADC_EnableADCCmp1 (119)

DrvADC_DisableADCCmp1 (120)

DrvADC_EnableSelfCalibration (121)

DrvADC_IsCalibrationDone (121)

DrvADC_DisableSelfCalibration (122)

DrvADC_GetVersion (123)

7. SPI驱动 (124)

7.1. SPI介绍 (124)

7.2. 通用特性 (124)

7.3. 常量定义 (125)

E_DRVSPI_PORT (125)

E_DRVSPI_MODE (125)

E_DRVSPI_TRANS_TYPE (125)

E_DRVSPI_ENDIAN (125)

E_DRVSPI_BYTE_REORDER (125)

E_DRVSPI_SSLTRIG (126)

E_DRVSPI_SS_ACT_TYPE (126)

7.4. 函数127

DrvSPI_Open (127)

DrvSPI_Close (128)

DrvSPI_SetEndian (129)

DrvSPI_SetBitLength (129)

DrvSPI_SetByteReorder (130)

DrvSPI_SetSuspendCycle (131)

DrvSPI_SetTriggerMode (132)

DrvSPI_SetSlaveSelectActiveLevel (133)

DrvSPI_GetLevelTriggerStatus (134)

DrvSPI_EnableAutoSS (134)

DrvSPI_DisableAutoSS (135)

DrvSPI_SetSS (136)

DrvSPI_ClrSS (136)

DrvSPI_IsBusy (137)

DrvSPI_BurstTransfer (138)

DrvSPI_SetClockFreq (139)

DrvSPI_GetClock1Freq (140)

DrvSPI_GetClock2Freq (140)

DrvSPI_SetVariableClockFunction (141)

DrvSPI_EnableInt (142)

DrvSPI_DisableInt (143)

DrvSPI_GetIntFlag (144)

DrvSPI_ClrIntFlag (145)

DrvSPI_SingleRead (145)

DrvSPI_SingleWrite (146)

DrvSPI_BurstRead (147)

DrvSPI_BurstWrite (147)

DrvSPI_DumpRxRegister (148)

DrvSPI_SetTxRegister (149)

DrvSPI_SetGo (150)

DrvSPI_ClrGo (150)

8.1. I2C介绍 (152)

8.2. I2C特性 (152)

8.3. 类型定义 (152)

E_I2C_CALLBACK_TYPE (152)

8.4. 函数153

DrvI2C_Open (153)

DrvI2C_Close (153)

DrvI2C_SetClockFreq (154)

DrvI2C_GetClockFreq (154)

DrvI2C_SetAddress (155)

DrvI2C_SetAddressMask (155)

DrvI2C_GetStatus (156)

DrvI2C_WriteData (157)

DrvI2C_ReadData (157)

DrvI2C_Ctrl (158)

DrvI2C_GetIntFlag (158)

DrvI2C_ClearIntFlag (159)

DrvI2C_EnableInt (159)

DrvI2C_DisableInt (160)

DrvI2C_InstallCallBack (160)

DrvI2C_UninstallCallBack (161)

DrvI2C_SetTimeoutCounter (162)

DrvI2C_ClearTimeoutFlag (162)

DrvI2C_GetVersion (163)

9. PWM驱动 (164)

9.1. PWM介绍 (164)

9.2. PWM特性 (164)

9.3. 常量定义 (165)

9.4. 函数165

DrvPWM_IsTimerEnabled (165)

DrvPWM_SetTimerCounter (166)

DrvPWM_GetTimerCounter (167)

DrvPWM_EnableInt (168)

DrvPWM_DisableInt (169)

DrvPWM_ClearInt (170)

DrvPWM_GetIntFlag (172)

DrvPWM_GetRisingCounter (173)

DrvPWM_GetFallingCounter (174)

DrvPWM_GetCaptureIntStatus (174)

DrvPWM_ClearCaptureIntStatus (175)

DrvPWM_Open (176)

DrvPWM_Close (177)

DrvPWM_EnableDeadZone (177)

DrvPWM_Enable (179)

DrvPWM_SetTimerClk (180)

DrvPWM_SetTimerIO (183)

DrvPWM_SelectClockSource (184)

DrvPWM_GetVersion (185)

10. FMC驱动 (187)

10.1. FMC介绍 (187)

10.2. FMC特性 (187)

Memory Address Map (187)

Flash Memory Structure (188)

10.3. 类型定义 (188)

E_FMC_BOOTSELECT (188)

10.4. 函数 (188)

DrvFMC_EnableISP (188)

DrvFMC_DisableISP (189)

DrvFMC_BootSelect (189)

DrvFMC_GetBootSelect (190)

DrvFMC_DisableConfigUpdate (192)

DrvFMC_EnablePowerSaving (192)

DrvFMC_DisablePowerSaving (193)

DrvFMC_Write (193)

DrvFMC_Read (194)

DrvFMC_Erase (195)

DrvFMC_WriteConfig (195)

DrvFMC_ReadDataFlashBaseAddr (196)

DrvFMC_EnableLowSpeedMode (196)

DrvFMC_DisableLowSpeedMode (197)

DrvFMC_GetVersion (197)

11. EBI驱动 (199)

11.1. EBI介绍 (199)

11.2. EBI特性 (199)

11.3. 类型定义 (200)

E_DRVEBI_BUS_WIDTH (200)

E_DRVEBI_MCLKDIV (200)

11.4. API函数 (200)

DrvEBI_Open (200)

DrvEBI_Close (201)

DrvEBI_SetBusTiming (201)

DrvEBI_GetBusTiming (203)

DrvEBI_GetVersion (203)

1. 概述

1.1. 文档结构

本文档是NuMicro? M051系列驱动参考手册。系统级软件开发人员可以使用NuMicro? M051系列驱动来代替直接使用寄存器的编程方式进行快速的应用软件开发,这可以大大减少总的开发时间。

在本文档中,对于每一个驱动应用接口,会提供一个关于该驱动应用接口的描述;使用和示例;代码。

完整的驱动例程和驱动源码在NuMicro? M051系列的BSP(板级支持包)里。

本文档分为若干个章节,第一章是概述。第二章到第十一章是详细的驱动描述,包括:System驱动,UART驱动,Timer驱动,GPIO 驱动,ADC驱动,SPI驱动,I2C驱动,PWM驱动,FMC驱动,和EBI驱动。

1.2. 相关文档

用户可以在我们的网站上找到如下文档:NuMicro TM M051 series Technical Reference Manual (TRM)

1.3. 缩略语和术语

ADC 模数转换器

AHB 增强型高性能总线

AMBA 增强型微控制器总线架构

APB 增强型外围设备总线

BOD 欠压检测

EBI 外部总线接口

FIFO 先进先出

FMC Flash存储控制器

GPIO 通用输入/输出

I2C 内部集成电路

LVR 低压复位

PDID 产品设备ID

PLL 锁相环

POR 上电复位

PWM 脉宽调制

1.4. 数据类型定义

在我们的驱动中所有的基本数据类型定义遵循ANSI C的定义并且和ARM CMSIS(Cortex-M软件接口标准)兼容。功能相关的枚举数据类型在各个相应的章节中定义。基本数据类型定义如下表。

2. SYS 驱动

2.1. 介绍

系统管理和时钟控制模块包含下面的功能:

●产品设备ID

●系统管理寄存器,可用于芯片和各个功能模块复位

●Brown-Out 和芯片各种其它的控制

●时钟发生器

●系统时钟和外设时钟

●Power down模式

2.2. 时钟模块图

时钟模块图给出了整个芯片所有相关的时钟,包括系统时钟(CPU时钟,HCLK和PCLK)和所有的外设时钟。在这里,12M表示外部晶振时钟源,与一个12M的晶体振荡器相连。22M表示内部22MHz的RC时钟源,其频率为22.1184M,偏差为1%。32K表示外部32768Hz的晶体振荡器,用于实时时钟(RTC)。10K表示内部10KHz的RC时钟源,其偏差为30%。

2.3. 类型定义

E_SYS_IP_RST

E_SYS_IP_CLK

E_SYS_PLL_CLKSRC

E_SYS_IP_DIV

E_SYS_IP_CLKSRC

E_SYS_CHIP_CLKSRC

E_SYS_PD_TYPE

2.4. 函数

DrvSYS_ReadProductID

原型:uint32_t DrvSYS_ReadProductID (void);

描述:读取产品设备ID。产品设备ID取决于芯片的part number。详细信息请参考附录PDID表。

参数:无

头文件:Driver/DrvSYS.h

返回值:产品设备ID

示例:uint32_t u32data;

u32data = DrvSYS_ReadProductID ( ); /* Read Product Device ID */

DrvSYS_GetResetSource

原型:uint32_t DrvSYS_GetResetSource (void);

描述:辨别最后一次”复位信号”的出处。详细的对应于各个复位源的位在TRM的‘RSTSRC’寄存器中给出。

参数:无

头文件:Driver/DrvSYS.h

返回值:RSTSRC寄存器的值

示例:uint32_t u32data;

u32data = DrvSYS_GetResetSource ( ); /* Get reset source from last operation */

DrvSYS_ClearResetSource

原型:uint32_t DrvSYS_ClearResetSource (uint32_t u32Src);

描述:写1清除复位源。

参数:u32Src [in] 复位源的相应位

头文件:Driver/DrvSYS.h

返回值:0 成功

示例:DrvSYS_ClearResetSource (1 << 3); /* Clear Bit 3 (Low Voltage Reset) */

DrvSYS_ResetIP

原型:void DrvSYS_ResetIP(E_SYS_IP_RST eIpRst);

描述:复位IP,包括GPIO,Timer0,Timer1,Timer2,Timer3,I2C,SPI0,SPI1,UART0,UART1,PWM03,PWM47,ADC和EBI。参数:eIpRst [in] 要复位的IP的枚举值,参考2.3节E_SYS_IP_RST的定义。

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_ResetIP (E_SYS_I2C_RST); /* Reset I2C */

DrvSYS_ResetIP (E_SYS_SPI0_RST); /* Reset SPI0 */

DrvSYS_ResetIP (E_SYS_UART0_RST); /* Reset UART0 */

DrvSYS_ResetCPU

原型:void DrvSYS_ResetCPU (void);

描述:复位CPU。软件会置位CPU_RST(IPRSTC1[1])来复位Cortex-M0 CPU内核和Flash存储器控制其(FMC)。

参数:无

示例:DrvSYS_ResetCPU ( ); /* Reset CPU and FMC */

DrvSYS_ResetChip

原型:void DrvSYS_ResetChip (void);

描述:复位整个芯片,包括Cortex-M0 CPU内核和所有外围设备。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_ResetChip(); /* Reset Whole Chip */

DrvSYS_SelectBODVolt

原型:void DrvSYS_SelectBODVolt (uint8_t u8Volt);

描述:选择Brown-Out门限电压。

参数:u8Volt [in] 3: 4.5V, 2: 3.8V, 1: 2.7V, 0: 2.2V

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_SelectBODVolt (0); /* Set Brown-Out Detector voltage 2.2V */

DrvSYS_SelectBODVolt (1); /* Set Brown-Out Detector voltage 2.7V */

DrvSYS_SelectBODVolt (2); /* Set Brown-Out Detector voltage 3.8V */

DrvSYS_SetBODFunction

原型:void DrvSYS_SetBODFunction (int32_t i32Enable, int32_t i32Flag, BOD_CALLBACK bodcallbackFn);

描述:使能欠压检测并选择Brown-Out复位功能或Brown-Out中断功能。如果选择Brown-Out中断功能,该函数会安装BOD 中断处理函数的回调函数。当AVDD引脚的电压值低于所选择的Brown-Out的门限电压时,Brown-Out检测器会复位芯片或者触发一个中断。用户可以使用DrvSYS_SelectBODVolt ( ) 函数取选择Brown-Out的门限电压。

参数:i32Enable [in] 1:使能,0:禁止

i32Flag [in] 1:使能Brown-Out复位功能;0:使能Brown-Out中断功能

bodcallbackFn [in] 当中断功能使能时,安装Brown-Out的回调函数。

头文件:Driver/DrvSYS.h

返回值:无

示例:

/* Enable Brown-Out Detector,select Brown-Out Interrupt function and install callback function‘BOD_CallbackFn’*/ DrvSYS_SetBODFunction (1, 0, BOD_CallbackFn);

DrvSYS_SetBODFunction (1, 1, NULL); /* Enable Brown-Out Detector and select Brown-Out reset function */ DrvSYS_SetBODFunction (0, 0, NULL); /* Disable Brown-Out Detector */

DrvSYS_EnableBODLowPowerMode

原型:void DrvSYS_EnableBODLowPowerMode (void);

描述:使能Brow-out检测器low power模式。在normal模式,Brown-Out检测器消耗大约100uA电能,在low power模式,电能消耗能减少到大约是normal模式下的10%,但是会增大Brown-Out检测器的反应时间。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_EnableBODLowPowerMode( ); /* Enable Brown-Out low power mode */

DrvSYS_DisableBODLowPowerMode

原型:void DrvSYS_DisableBODLowPowerMode (void);

描述:禁止Brown-out检测器low power模式。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_DisableBODLowPowerMode ( ); /* Disable Brown-Out low power mode */

原型:void DrvSYS_EnableLowVoltReset (void);

描述:当输入电压低于LVR电路电压时,使能低压复位功能复位芯片。典型的低压门限值是2.0V,LVR的门限电压特性在TRM的电气特性章节中给出。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_EnableLowVoltRst ( ); /* Enable low voltage reset function */

DrvSYS_DisableLowVoltReset

原型:void DrvSYS_DisableLowVoltReset (void);

描述:禁止低压复位功能。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_DisableLowVoltRst ( ); /* Disable low voltage reset function */

DrvSYS_GetBODState

原型:uint32_t DrvSYS_GetBODState (void);

描述:获取Brown-out检测器状态。

参数:无

头文件:Driver/DrvSYS.h

返回值:1: 检测到的电压低于BOD门限电压;0: 检测到的电压高于BOD门限电压

示例:uint32_t u32flag;

u32flag = DrvSYS_GetBODState();/* Get Brown-out state if Brown-out detector function is enabled */ DrvSYS_UnlockProtectedReg

原型:int32_t DrvSYS_UnlockProtectedReg (void);

描述:解锁被保护的寄存器。为了避免因为一些系统控制寄存器被无意的写入而影响到芯片的正常操作,这些系统控制寄存器需要被保护起来。这些系统控制寄存器在上电复位的时候即被锁住。如果用户想要修改这些寄存器,就必须先为它们解锁。详细的被保护寄存器的相关信息在TRM的系统管理章节的“REGWRPROT”寄存器中给出。

参数:无

头文件:Driver/DrvSYS.h

返回值:0 成功<0 失败

示例:int32_t i32ret;

i32ret = DrvSYS_UnlockProtectedReg(); /* Unlock protected registers */

DrvSYS_LockProtectedReg

原型:int32_t DrvSYS_LockProtectedReg(void);

描述:重新锁上被保护的寄存器。推荐用户在修改完被保护的寄存器之后重新锁上它们。

参数:无

头文件:Driver/DrvSYS.h

返回值:0 成功;<0 失败

示例:

int32_t i32ret;

i32ret = DrvSYS_LockProtectedReg ( ); /* Lock protected registers */

DrvSYS_IsProtectedRegLocked

原型:int32_t DrvSYS_IsProtectedRegLocked (void);

描述:检验被保护的寄存器是否被锁上。

参数:无

头文件:Driver/DrvSYS.h

返回值:1:被保护的寄存器没有被锁上;0:被保护的寄存器已经被锁上

int32_t i32flag;

i32flag = DrvSYS_IsProtectedRegLocked( );/* Check the protected registers are unlocked or not */

If (i32flag){}/* do something for unlock */

Else {}/* do something for lock */

DrvSYS_EnablePOR

原型:void DrvSYS_EnablePOR (void);

描述:重新使能上电复位控制。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_EnablePOR ( ); /* Enable power-on-reset control */

DrvSYS_DisablePOR

原型:void DrvSYS_DisablePOR (void);

描述:禁止上电复位控制。芯片上电时,POR电路产生一个复位信号复位整个芯片,但是电源上的一些噪声信号也可能导致POR电路误产生复位信号,为了防止这种情况发生,用户可以禁止POR控制电路。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_DisablePOR ( ); /* Disable power-on-reset control */

DrvSYS_SetIPClock

原型:void DrvSYS_SetIPClock (E_SYS_IP_CLK eIpClk, int32_t i32Enable);

描述:使能/关闭IP时钟,包括看门狗定时器,定时器0, 定时器1, 定时器2, 定时器3, I2C,SPI0, SPI1, UART0, UART1, PWM01, PWM23, PWM45, PWM67, ADC, EBI, Flash ISP控制器和频率分频器输出。

参数:eIpClk [in] IP时钟枚举值,参考2.3节E_SYS_IP_CLK的定义

i32Enable [in] 1:使能,0:禁止

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_SetIPClock (E_SYS_I2C0_CLK, 1); /* Enable I2C0 engine clock */

DrvSYS_SetIPClock (E_SYS_I2C0_CLK, 0); /* Disable I2C0 engine clock */

DrvSYS_SetIPClock (E_SYS_SPI0_CLK, 1); /* Enable SPI0 engine clock */

DrvSYS_SetIPClock (E_SYS_SPI0_CLK, 0); /* Disable SPI0 engine clock */

DrvSYS_SetIPClock (E_SYS_TMR0_CLK, 1); /* Enable TIMER0 engine clock */

DrvSYS_SetIPClock (E_SYS_TMR0_CLK, 0); /* Disable TIMER0 engine clock */

DrvSYS_SelectHCLKSource

原型:int32_t DrvSYS_SelectHCLKSource (uint8_t u8ClkSrcSel);

描述:选择HCLK时钟源,时钟源可以是外部12M crystal时钟, PLL时钟, 内部10K oscillator时钟,或者内部22M oscillator时钟。HCLK的详细用法请参考本文档2.2节的时钟模块图。

参数:u8ClkSrcSel [in]

0:外部12M时钟

2:PLL时钟

3:内部10K时钟

7:内部22M时钟

头文件:Driver/DrvSYS.h

返回值:0 成功;<0 参数:错误

示例:

DrvSYS_SelectHCLKSource (0); /* Change HCLK clock source to be external 12M */

DrvSYS_SelectHCLKSource (2); /* Change HCLK clock source to be PLL */

原型:int32_t DrvSYS_SelectSysTickSource (uint8_t u8ClkSrcSel);

描述:选择Cortex-M0 SysTick时钟源,可以是外部12M crystal时钟,外部12M crystal时钟/2,HCLK/2,或者内部22M oscillator时钟/2。

参数:u8ClkSrcSel [in]

0:外部12M时钟

2:PLL时钟

3:内部10K时钟

4~7:内部22M时钟

头文件:Driver/DrvSYS.h

返回值:0 成功;<0 参数:错误

示例:

DrvSYS_SelectSysTickSource (0); /* Change SysTick clock source to be external 12M */

DrvSYS_SelectSysTickSource (3); /* Change SysTick clock source to be HCLK / 2 */

DrvSYS_SelectIPClockSource

原型:int32_t DrvSYS_SelectIPClockSource (E_SYS_IP_CLKSRC eIpClkSrc, uint8_tu8ClkSrcSel);

描述:选择IP时钟源,包括看门狗定时器, 模数转换器, 定时器0~3, UART, PWM01, PWM23,PWM45, PWM67和频率分频器输出,时钟源的相关信息请参考本文档2.2节的时钟模块图。详细的IP时钟源的设定在TRM的“CLKSEL1”和“CLKSEL2”中给出。

参数:eIpClkSrc [in]

E_SYS_WDT_CLKSRC / E_SYS_ADC_CLKSRC / E_SYS_TMR0_CLKSRC

E_SYS_TMR1_CLKSRC / E_SYS_TMR2_CLKSRC / E_SYS_TMR3_CLKSRC

E_SYS_UART_CLKSRC / E_SYS_PWM01_CLKSRC / E_SYS_PWM23_CLKSRC

E_SYS_PWM45_CLKSRC / E_SYS_PWM67_CLKSRC / E_SYS_FRQDIV_CLKSRC

u8ClkSrcSel [in] IP相应的时钟源

头文件:Driver/DrvSYS.h

返回值:0 成功;< 0 参数:错误

示例:

DrvSYS_SelectIPClockSource(E_SYS_ADC_CLKSRC,0x00); /* Select ADC clock source from 12M */

DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC,0x03);/* Select TIMER0 clock source from external trigger */ DrvSYS_SetClockDivider

原型:int32_t DrvSYS_SetClockDivider (E_SYS_IP_DIV eIpDiv, int32_t i32value);

描述:设定IP时钟源的除频值。IP时钟源频率计算公式是:IP时钟源频率/(i32value+1)。

参数:eIpDiv [in] E_SYS_ADC_DIV / E_SYS_UART_DIV / E_SYS_HCLK_DIV

i32value [in] 除频值。

HCLK, UART:0~15

ADC:0~255

头文件:Driver/DrvSYS.h

返回值:0 成功;< 0 参数:错误

示例:

DrvSYS_SetClockDivider(E_SYS_ADC_DIV,0x01);/* Set ADC clock divide number 0x01; ADC clock=ADC source clock/(1+1) */ DrvSYS_SetClockDivider(E_SYS_UART_DIV,0x02);/* Set UART clock divide number 0x02; UART clock=UART source clock/(2+1) */

DrvSYS_SetOscCtrl

原型:int32_t DrvSYS_SetOscCtrl (E_SYS_CHIP_CLKSRC eClkSrc, int32_t i32Enable);

描述:使能/禁止内部oscillator和外部crystal ,包括内部10K和22M oscillator, 外部12M crystal。

参数:eOscCtrl [in] E_SYS_XTL12M / E_SYS_OSC22M / E_SYS_OSC10K.

i32Enable [in] 1:使能; 0:禁止

头文件:Driver/DrvSYS.h

返回值:0 成功;<0 参数:错误

示例:

DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); /* Enable external 12M */

DrvSYS_SetOscCtrl(E_SYS_XTL12M, 0); /* Disable external 12M */

DrvSYS_SetPowerDownWakeUpInt

原型:void DrvSYS_SetPowerDownWakeUpInt(int32_t i32Enable, PWRWU_CALLBACK pdwucallbackFn, int32_t i32enWUDelay);

描述:使能/禁止power down唤醒中断功能,如果power down唤醒中断使能的话,将安装回调函数,并且可以使能4096个时钟延迟来等待12M crystal 或者22M oscillator时钟稳定。当GPIO, UART, WDT或者BOD唤醒的时候,power down唤醒中断将发生。

参数:i32Enable [in] 1:使能; 0:禁止

pdwucallbackFn [in] 如果唤醒中断使能的话,安装唤醒中断回调函数

i32enWUDelay [in] 1:使能4096个时钟延迟,0:关闭4096个时钟延迟

头文件:Driver/DrvSYS.h

返回值:无

示例:

/* Enable Power down Wake up Interrupt function,install callback function ‘PWRWU_CallbackFn’, and enable the 4096 clock cycle delay */ DrvSYS_SetPowerDownWakeUpInt (1, PWRWU_CallbackFn, 1);

/* Disable Power down Wake up Interrupt function, and uninstall callback function */

DrvSYS_SetPowerDownWakeUpInt (0, NULL, 0);

DrvSYS_EnterPowerDown

原型:void DrvSYS_EnterPowerDown (E_SYS_PD_TYPE ePDType);

描述:立即进入系统power down模式或等待CPU进入sleep模式后进入power down模式。当系统进入power down模式后,LDO,12M crystal和22M oscillator将被禁止,应用请参考Application Note,AN_1007_EN_Power_Management。参数:ePDType [in]

E_SYS_IMMEDIATE:芯片立即进入power down模式。

E_SYS_WAIT_FOR_CPU:等到CPU进入sleep模式后,芯片才进入power down模式。

头文件:Driver/DrvSYS.h

返回值:无

示例:

DrvSYS_EnterPowerDown(E_SYS_ IMMEDIATE); /* Chip enter power mode immediately */

DrvSYS_EnterPowerDown(E_SYS_WAIT_FOR_CPU); /* Wait for CPU enters sleep mode,then Chip enter power mode */ DrvSYS_SelectPLLSource

原型:void DrvSYS_SelectPLLSource (E_SYS_PLL_CLKSRC ePllSrc);

描述:选择PLL时钟源,可以是内部22M oscillator和外部12M crystal。

参数:ePllSrc [in] E_SYS_EXTERNAL_12M / E_SYS_INTERNAL_22M

头文件:Driver/DrvSYS.h

返回值:无

示例:

DrvSYS_ SelectPLLSource (E_SYS_EXTERNAL_12M); /* Select PLL clock source from 12M */

DrvSYS_ SelectPLLSource (E_SYS_INTERNAL_22M); /* Select PLL clock source from 22M */

DrvSYS_SetPLLMode

原型:void DrvSYS_SetPLLMode (int32_t i32Flag);

参数:i32Flag [in] 1:PLL处于power down模式;0:PLL处于normal模式.

头文件:Driver/DrvSYS.h

返回值:无

示例:

DrvSYS_SetPLLMode (1); /* Enable PLL power down mode, PLL operates in power down mode */ DrvSYS_SetPLLMode (0); /* Disable PLL power down mode, PLL operates in normal mode */ DrvSYS_GetExtClockFreq

原型:uint32_t DrvSYS_GetExtClockFreq (void);

描述:取得外部crystal时钟频率。单位是Hz。

参数:无

头文件:Driver/DrvSYS.h

返回值:外部crystal时钟频率

示例:uint32_t u32clock;

u32clock = DrvSYS_GetExtClockFreq ( ); /* Get external crystal clock frequency */ DrvSYS_GetPLLContent

原型:uint32_t DrvSYS_GetPLLContent(E_SYS_PLL_CLKSRC ePllSrc, uint32_t u32PllClk);

描述:根据u32PllClk定义的目标PLL频率,计算出最接近于该频率的PLL频率值。

参数:ePllSrc [in] E_SYS_EXTERNAL_12M / E_SYS_INTERNAL_22M

u32PllClk [in] 目标PLL时钟频率,单位是Hz。u32PllClk的取值范围是25MHz~200MHz。

头文件:Driver/DrvSYS.h

返回值:PLL控制寄存器的设定值。

示例:/* Get PLL control register setting for target PLL clock 50MHz */

uint32_t u32PllCr;

u32PllCr = DrvSYS_GetPLLContent (E_SYS_EXTERNAL_12M, 50000000);

DrvSYS_SetPLLContent

原型:void DrvSYS_SetPLLContent (uint32_t u32PllContent);

描述:设定PLL的设定值。用户可以使用DrvSYS_GetPLLContent ( )来获取合适的PLL设定值和使用DrvSYS_GetPLLClockFreq ( ) 来获取实际的PLL时钟频率。

参数:u32PllContent [in] PLL寄存器需要的设定值,为了获得目标PLL时钟频率。

头文件:Driver/DrvSYS.h

返回值:无

示例:uint32_t u32PllCr;

/* Get PLL control register setting for target PLL clock 50MHz */

u32PllCr = DrvSYS_GetPLLContent (E_DRVSYS_EXTERNAL_12M, 50000000);

/* Set PLL control register setting to get nearest PLL clock */

DrvSYS_SetPLLContent (u32PllCr);

DrvSYS_GetPLLClockFreq

原型:uint32_t DrvSYS_GetPLLClockFreq (void);

描述:获取PLL时钟输出频率。

参数:无

头文件:Driver/DrvSYS.h

返回值:PLL时钟输出频率,单位Hz

示例:uint32_t u32clock;

u32clock = DrvSYS_GetPLLClockFreq ( ); /* Get actual PLL clock */

DrvSYS_GetHCLKFreq

原型:uint32_t DrvSYS_GetHCLKFreq (void);

描述:获取HCLK时钟频率。

头文件:Driver/DrvSYS.h

返回值:HCLK时钟频率,单位Hz

示例:uint32_t u32clock;

u32clock = DrvSYS_GetHCLKFreq ( ); /* Get current HCLK clock */

DrvSYS_Open

原型:int32_t DrvSYS_Open (uint32_t u32Hclk);

描述:根据PLL源时钟和目标HCLK时钟频率,配置PLL设定值。由于硬件的限制,实际的HCLK时钟可能跟目标HCLK时钟略有不同。

__DrvSYS_GetPLLClockFreq ( ) 可以用于获取实际的PLL时钟

DrvSYS_GetHCLKFreq ( ) 可以用于获取实际的HCLK时钟

参数:u32Hclk [in] 目标HCLK时钟频率,单位是Hz。u32Hclk的取值范围是25MHz~200MHz。

头文件:Driver/DrvSYS.h

返回值:0 成功;< 0 时钟设定值超出了其取值范围

示例:DrvSYS_Open (50000000);/* Set PLL clock 50MHz, and switch HCLK source clock to PLL */

DrvSYS_SetFreqDividerOutput

原型:int32_t DrvSYS_SetFreqDividerOutput (int32_t i32Flag, uint8_t u8Divider);

描述:M051系列支持通过CLKO输出引脚来监视时钟源频率。该函数用来使能或禁止频率时钟输出,并设定其除频值。输出频率大小计算公式为F out = F in / 2N+1,F in是输出时钟频率,F out是除频器输出时钟频率,N是一个4-bit的数值。

为了监视时钟源频率,我们可以使用该函数使能时钟输出功能。然而,我们还需要把CLKO设定为输出引脚,这可通过把M051系列GPIO多功能选择选择为输出时钟到时钟输出引脚来实现。

参数:

i32Flag [in] 1:使能,0:禁止

U8Divider [in] 输出频率的除频值,范围是0~15。

头文件:Driver/DrvSYS.h

返回值:0 成功;<0 参数:错误

示例:

/* Enable frequency clock output and set its divide number 2,The output frequency=input clock/2^(2+1)*/ DrvSYS_SetFreqDividerOutput (1, 2);

/* Disable frequency clock output */

DrvSYS_SetFreqDividerOutput (0, 0);

DrvSYS_Delay

原型:void DrvSYS_Delay (uint32_t us);

描述:使用Cortex-M0的SysTick定时器产生延时时间,单位是us。SysTick的时钟源默认是来自HCLK时钟。如果SysTick 的时钟源被用户修改了,延时时间可能不正确。

参数:us [in] 延时时间,最大延时时间是335000us。

头文件:Driver/DrvSYS.h

返回值:无

示例:DrvSYS_Delay (5000); /* Delay 5000us */

DrvSYS_GetChipClockSourceStatus

原型:int32_t DrvSYS_GetChipClockSourceStatus (E_SYS_CHIP_CLKSRC eClkSrc);

描述:监视芯片时钟源是否稳定,包括内部10K, 22M Oscillator, 外部12M crystal, 或PLL时钟。

参数:eClkSrc [in] E_SYS_XTL12M / E_SYS_OSC22M / E_SYS_OSC10K / E_SYS_PLL

头文件:Driver/DrvSYS.h

返回值:0 时钟源不稳定或者时钟未被使能;1 时钟源稳定;<0 参数:错误

示例:

DrvSYS_SetOscCtrl (E_SYS_XTL12M, 1); /* Enable external 12M */

while (DrvSYS_GetChipClockSourceStatus (E_SYS_XTL12M) != 1); /* Waiting for 12M Crystal stable */

while (DrvSYS_GetChipClockSourceStatus (E_SYS_PLL)!= 1); /* Waiting for PLL clock stable */ DrvSYS_GetClockSwitchStatus

原型:uint32_t DrvSYS_GetClockSwitchStatus (void);

描述:当软件切换系统时钟源时,检验切换目标时钟成功与否。

参数:无

头文件:Driver/DrvSYS.h

返回值:0:时钟切换成功;1:时钟切换失败。

示例:uint32_t u32flag;

DrvSYS_SelectHCLKSource (2); /* Change HCLK clock source to be PLL */

u32flag = DrvSYS_GetClockSwitchStatus ( ); /* Get clock switch flag */

If (u32flag){}/* do something for clock switch fail */

DrvSYS_ClearClockSwitchStatus

原型:void DrvSYS_ClearClockSwitchStatus (void);

描述:清除时钟切换失败标志。

参数:无

头文件:Driver/DrvSYS.h

返回值:无

示例:uint32_t u32flag;

DrvSYS_SelectHCLKSource (0); /* Change HCLK clock source to be external 12M */

u32flag = DrvSYS_GetClockSwitchStatus ( ); /* Get clock switch fail flag */

if(u32flag)

DrvSYS_ClearClockSwitchStatus ( ); /* Clear clock switch fail flag */

DrvSYS_GetVersion

原型:uint32_t DrvSYS_GetVersion (void);

描述:获取该DrvSYS驱动版本。

参数:无

头文件:Driver/DrvSYS.h

返回值:

版本号:

3. UART 驱动

3.1. UART介绍

通用异步收发器(UART)从外设,比如调制解调器接收到数据的时候实现串到并转换,从CPU收到

数据的时候实现并到串的转换。

细节请参考芯片规格书UART章节。

3.2. UART Feature

UART包含如下特性:

●用作收/发数据缓冲的64 字节(UART0)/16 字节(UART1) 缓冲区

●支持自动流控/流控功能(CTS, RTS).

●完全可编程的串口特性:

-- 5-, 6-, 7-, 或者8比特字符

-- 奇、偶或者无校验比特产生和探测

-- 1-, 1&1/2, 或者2比特停止位

-- 波特率发生器

-- 错误的起始位探测.

●支持IrDA SIR 功能

●支持LIN(本地互联网络)主模式

●可编程波特率发生器,允许时钟除以可编程的分频

3.3. 常量定义

3.4. 类型定义

E_UART_PORT

E_INT_SOURCE

E_DATABITS_SETTINGS

E_PARITY_SETTINGS

E_STOPBITS_SETTINGS

E_FIFO_SETTINGS

E_UART_FUNC

E_MODE_RS485

3.5. 宏

_DRVUART_SENDBYTE

原型:void _DRVUART_SENDBYTE (u32Port, byData);

描述:从UART发送1字节数据。

头文件:Driver/DrvUART.h

返回值:无

示例:_DRVUART_SENDBYTE (UART_PORT0, 0x55); /* Using UART port0 to send one byte 0x55 */

_DRVUART_RECEIVEBYTE

原型:uint8_t _DRVUART_RECEIVEBYTE (u32Port);

描述:从指定串口的FIFO接收1字节数据。

头文件:Driver/DrvUART.h

返回值:1字节数据。

示例:uint8_t u8data;

u8data = _DRVUART_RECEIVEBYTE (UART_PORT0); /* Using UART port0 to receive one byte */

_DRVUART_SET_DIVIDER

原型:void _DRVUART_SET_DIVIDER (u32Port, u16Divider);

描述:设定UART除频值来控制UART波特率。

头文件:Driver/DrvUART.h

返回值:无

示例:_DRVUART_SET_DIVIDER (UART_PORT0, 6); /* Set the divider of UART is 6 */

_DRVUART_RECEIVEAVAILABLE

原型:int8_t _DRVUART_RECEIVEAVAILABLE (u32Port);

描述:获取当前接收FIFO指针。

头文件:Driver/DrvUART.h

返回值:接收FIFO指针值。

示例:_DRVUART_RECEIVEAVAILABLE (UART_PORT0); /* To get UART channel 0 current Rx FIFO pointer */ _DRVUART_WAIT_TX_EMPTY

原型:void _DRVUART_WAIT_TX_EMPTY (u32Port);

描述:查询Tx FIFO空标志来检验Tx FIFO为空。

头文件:Driver/DrvUART.h

返回值:无

示例:/* Send 0x55 from UART0 and check TX FIFO is empty */

_DRVUART_SENDBYTE (UART_PORT0, 0x55);

_DRVUART_WAIT_TX_EMPTY (UART_PORT0);

3.6. 函数

DrvUART_Open

参数:u32Port [in] 指定UART_PORT0/UART_PORT1

sParam [in] 指定UART的特性。包括

u32BaudRate: 波特率(Hz)

u8cParity: 无/奇/偶校验

可以是:

DRVUART_PARITY_NONE 无校验).

DRVUART_PARITY_EVEN (偶校验)

DRVUART_PARITY_ODD(奇校验).

u8cDataBits: 数据位设定

可以是:

DRVUART_DATA_BITS_5 (5比特).

DRVUART_DATA_BITS_6 (6比特)

DRVUART_DATA_BITS_7 (7比特).

DRVUART_DATA_BITS_8 (8比特).

u8cStopBits: 停止位设定

可以是:

DRVUART_STOPBITS_1 (1停止位).

DRVUART_STOPBITS_1_5 (1.5停止位)

DRVUART_STOPBITS_2 (2停止位).

u8cRxTriggerLevel: 接收FIFO中断触发级别LEVEL_X_BYTE说明串口中断触发级别是X字节。

可以是:

DRVUART_FIFO_1BYTE, DRVUART_FIFO_4BYTES

DRVUART_FIFO_8BYTES, DRVUART_FIFO_14BYTES

DRVUART_FIFO_30BYTES, DRVUART_FIFO_46BYTES

DRVUART_FIFO_62BYTES

对于UART0,可取值为从LEVEL_1_BYTE到LEVEL_62_BYTES.其他的,取值范围为从LEVEL_1_BYTE到LEVEL_14_BYTES.

u8TimeOut: 超时时间“N”,表示N个时钟周期,计数时钟是波特率。

头文件:Driver/DrvUART.h

返回值:

E_SUCCESS: 成功.

E_DRVUART_ERR_PORT_INVALID: 端口错误

E_DRVUART_ERR_PARITY_INVALID: 校验设定错误

E_DRVUART_ERR_DATA_BITS_INVALID: 数据比特错误

E_DRVUART_ERR_STOP_BITS_INVALID: 停止位设定错误

E_DRVUART_ERR_TRIGGERLEVEL_INVALID: 缓冲区触发级别错误

示例:

/*Set UART0 under 115200bps,8 data bits,1 stop bit and none parity and 1 byte Rx trigger level settings.*/ STR_UART_T sParam;

sParam.u32BaudRate = 115200;

sParam.u8cDataBits = DRVUART_DATABITS_8;

sParam.u8cStopBits = DRVUART_STOPBITS_1;

sParam.u8cParity = DRVUART_PARITY_NONE;

sParam.u8cRxTriggerLevel = DRVUART_FIFO_1BYTES;

DrvUART_Open (UART_PORT0, &sParam);

DrvUART_Close

原型:void DrvUART_Close (E_UART_PORT u32Port);

XPL-ds_ Xenus Copley交流伺服驱动器

description Xenus Plus set new levels of performance, connectivity, and flexibility. CANopen communication provides a widely used cost-effective industrial bus. A wide range of absolute interfaces are built-in including EnDat, Hiperface, and BiSS. High resolution A/D converters ensure optimal current loop performance. Both isolated and high-speed non-isolated I/O are provided. For safety critical applications, redundant power stage enable inputs can be employed. Model Vac Ic Ip XPL-230-18100 - 240618XPL-230-36100 - 2401236XPL-230-40 100 - 240 20 40 Add -R for resolver feedback option control Modes ? Indexer, Point-to-Point, PVT ? Camming, Gearing ? Position, Velocity, Torque command interface ? CANopen ? ASCII and discrete I/O ? stepper commands ? ±10V position/velocity/torque (2 inputs) ? PWM velocity/torque command ? Master encoder (Gearing/Camming) Communications ? CAN ? RS-232 ? RS-485 (Optional)Accessories ? External regen resistors ? External edge filter Feedback ? Digital quad A/B encoder ? EnDat, Hiperface, BiSS, SSI, & panasonic encoders ? Aux. encoder / encoder out ? Analog sin/cos encoder ? Resolver option ? Digital Halls Safe Torque Off (STO) ? Two active inputs enable power stage ? One output confirms power stage status I/O Digital ? 15 inputs, 6 outputs I/O Analog ? 2, 16 bit inputs ? 1, 12 bit input ? 1, 12 bit output Dimensions: in [mm] ? 7.9 x 5.5 x 2.3 [202 x 139 x 52]

Copley驱动器用户指南

Copley驱动器总结 一、驱动器简介 -S和-R版本可以从模拟正弦/余弦编码器和无刷解析器中模拟出正交编码器的输出信号,我们的驱动器是XTL-230-40,输入标准版本,支持正交编码器。 驱动器可以以以下几种方式进行操作: 1.作为一个传统的电机驱动器,接受外部控制器发出的电流,速度和位置信号。 在电流和速度模式下,可以接受正负10V的模拟信号;占空比50%的PWM波,或者PWM/极性输入。 在位置模式下,输入可以是从步进电机控制器发出的位置增量命令(以脉冲方向格式或者递增递减计数格式)或者是从主编码器输出的A/B正交指令。 2.作为CANopen网络的一个网点。 3.作为DeviceNET网络的一个网点。 4.作为一个独立的控制器运行虚拟机上的程序,或者通过RS232串口运行ASCII码格式的 指令。 另外还需要一个独立的+24V电源给内部控制电路供电,这个电源跟主电源隔离开来。这个设计保证了主电源断开,+24v电源不断开的时候,驱动器能保留位置信息和通信。 CME2 CME2是对驱动器进行配置和调试的软件,通过RS232串口连接电脑和驱动器。所有的配置驱动器的操作都可以通过这个软件完成。电机数据存储为.CCM文件,驱动器数据存储为.CCX 文件。

二、驱动器操作 供电和接地图 电源 交流电压经过整流滤波输出直流驱动PWM逆变器。 +24V电源经过一个DC/DC变换器,产生控制电路所需的电压和一个+5V电源给HALL电路和编码器供电。 操作模式 控制环的嵌套和模式 驱动器可以使用最多三个嵌套的控制环,电流环、速度环、位置环在三种相关联的模式下控制电机

Copley 驱动中文调试说明

Copley CME2调试软件用户向导 Chinese Revision 1 Nov 2009 Written by Paul

目录 1.软件的安装、启动及向导 (4) 1. 1 安装软件 (4) 1. 2 启动CME2软件 (4) 1. 3 串口设置 (4) 1. 4 CAN网络参数配置 (6) 1. 5 CME2连接到驱动器 (6) 1. 6 CME2软件向导 (7) 2.基本配置 (9) 2.1 改变基本设置 (9) 2.2 ServoTube电机配置 (12) 3.电机/反馈参数配置 (14) 3.1 电机/反馈参数窗口概览 (14) 3.2 旋转电机参数设置 (14) 3.3 直线电机参数设置 (15) 3.4 反馈参数,旋转电机 (16) 3.5 反馈参数,直线电机 (17) 3.6 反馈注意事项 (17) 3.7 Brake/Stop 参数 (18) 3.8 Brake/Stop 注意事项 (18) 3.9 计算功能 (19) 4.数字输入/输出配置 (21) 4.1 数字输入 (21) 4.2 数字输出 (23) 4.3 同步PWM开关频率 (28) 5.电机相位 (29) 5.1 用Auto Phase 整定电机相位 (29) 5.2 选择Auto Phase时Current和Increment Rate值向导 (34) 5.3 Auto Phase过程中的微调 (34) 5.4 用Motor Phase Manually整定电机相位 (35) 6.控制面板 (40) 6.1 Control Panel 概览 (40) 6.2 状态指示和消息 (41) 6.3 Control Panel 监控通道 (41) 6.4 控制功能 (42) 6.5 Jog 模式 (42) 7.控制环路 (44) 7.1 电流环设置和调试 (44) 7.2 电流环自动调节 (46) 7.3 电流模式和电流环的注意事项 (48) 7.4 速度环设置和调试 (50) 7.5 速度模式和速度环的注意事项 (52) 7.6 位置环设置和调试 (54)

基于Canopen协议的运动控制系统设计

基于Canopen协议的运动控制系统设计 刘玉倩张文靳卫国王慧 (中国电子科技集团公司第四十五研究所,北京,101601) 摘要:描述了一种最广泛应用的现场总线CAN和最为成功的CAN应用层协议Canopen,介绍了CAN +Canopen工业控制总线解决方案,重点阐述了这种解决方案在一种工业控制模型中的实现。同时对软件设计、设备调试中的问题提出解决方案,对系统效率、可靠性进行测试优化。 关键词:CAN;Canopen;运动控制;软件编程 中文分类号:文献标志码:文章编号: Motion Control System Design Based on Canopen protocol Liu Yuqian, Fu Chunhe, Zhang Wen, Jin Weiguo (The 45th Research Institute of CETC,Beijing 101601,Chia) Abstract:This paper describes a widely used fieldbus CAN and the successful Application layer protocol Canopen ,introduces the CAN and Canopen industry control fieldbus solutions, emphatically expounds the realization of the field bus resolution in the industry control model. At the same time, put forward resolvents of problems in software design and machine debugging, tests and optimizes the system’s stability and efficiency. KeyWord: CAN;Canopen;motion control;software program CAN总线系统解决方案是利用CAN总线的优点及其特长为机器自动化设备提供高效、可靠、性价比高的解决方案。CAN+Canopen是机器自动化领域最为成功的总线解决方案,在欧美被广泛应用]1[。本文将以一种全自动半导体设备为具体实例,介绍一种基于CAN+Canopen解决方案的工业控制模型的软件实现。1CAN和Canopen协议 CAN是最早的,也是应用最为广泛的现场总线。CANopen是欧洲CIA组织定义的最为成功的CAN应用层协议,在基于CAN的自动化系统中居于领导地位。CAN现场总线技术是集自动控制技术、通讯技术、传感技术、计算机技术等于一体,是个革命性的技术,正广泛应用于自动化各个领域。目前广泛使用的其它现场总线还有Profibus、DeviceNet、ControlNet、HART、FF等等,但是CAN 总线也是所有现场纵向中最早出现的,也是最适合机器自动化领域的现场总线。 CAN总线除了具有一般总线所具有的优点外,还根据机械自动化的特点,提供了一些非常有优势的技术特点: 1. 高速的数据传输速率可达1M bit/s; 2. 采用对数据通信数据块进行编码,可以多主方式工作;

关于仿人机器人关节驱动微型伺服系统的介绍

摘要:用于仿人机器人关节驱动的微型伺服系统日前完全依赖进口。基于分析微型伺服系统各部件的发展现状与技术特点,研制了一款适用于仿人机器人关节驱动的国产倒服系统,包括永磁无刷伺服电机、巨磁阻编码器、高功率密度驱动模块以及通讯单元。通过与周内仿人机器人研究单位常用的几款进口伺服系统进行对比,验证所研制的微型伺服系统满足仿人机器人关节驱动对功率密度比等性能指标的要求.可完全代替进口产品。 关键词:仿人机器人;关节驱动;微型伺服系统,永磁同步电动机 1 引言 2000年,日本本田公司发布的仿人机器人AsIMO吸引了全世界的目光。过去10年里,得益于计算机、电气工程、材料工程、传感器科学等相关学科的发展,仿人机器人技术也有了长足的发展。其中较为突出的有日本本田公司、美国麻省理工大学、俄亥俄州立大学、北京理工大学、哈尔滨工业大学等。仿人机器人由控制系统、关节伺服系统、传感器系统、能源系统和本体结构5部分组成。关节伺服系统按驱动方式可以分为液压伺服、气动伺服、电机伺服、压电伺服等。这几种系统中,液压伺服抗污染能力差、调试维护困难、瞬间过载能力低;气动伺服非线性程度高、定位刚度小;电机伺服通常需要减速机构,使其体积增大;压电伺服一般不需要减速机构,易于实现微型化,但其驱动电路复杂,多用于微型机器人或仿人机器人的手指关节。比较几种伺服系统的优缺点,电机伺服系统,尤其是旋转电机伺服系统由于技术成熟、可靠性高、刚度强、较易驱动,是目前仿人机器人关节伺服系统的首选。 在仿人机器人中,由于使用电池供电,供电电压低、功率/能量密度受限,且机器人的体积、重量均有严格的要求,所以仿人机器人关节中使用的电机伺服系统有其特殊的要求。例如低工作电压而且变化范围大、低损耗、高功率密度、重景轻、单一电源供电、高动态性能、高可靠性等等。本文围绕仿人机器人对关节驱动的要求特点,详细介绍目前广泛应用的关节电机伺服系统的组成、类别、性能特点等。在此基础上研制了一台国产微型伺服系统,通过与国外同类伺服系统的对比研究,结果表明所研制的微型系统满足仿人机器人关节驱动的性能要求,可取代进口产品。 2 关节驱动伺服系统的组成 电机伺服系统一般是由电动机、位置传感器、电流传感器、功率器件和控制器5部分组成的闭环系统,如图1所示。 2.1电机 永磁无刷电动机无需励磁绕组和励磁电源,结构相对简单,具有很高的功率密度,非常适合仿人机器人这种对体积、重量十分敏感的场合。在伺服系统中应用的永磁无刷电动机分为元刷直流电动机(brushless DC motor,BI。DCM)和永磁同步电动机(PMSM)两种。前者设计和生产费用低,但转动时不可避免有转矩脉动;后者正弦波驱动,理论上可完全消除转矩脉动,但需要更高精度的转子位置传感器和更复杂的控制器件”…。 2.2位置传感器 2.2.1光电编码器 在位置伺服系统中,光电编码器常被采用作为位置传感器。它具有高精度、高分辨率、工作范同大、功耗低、非接触测量等优点,但由于光栅盘是精密的光学元件,其抗振性能差,轴向的振动极易使其破碎,烟雾、灰尘等杂质也会影响光路系统。光源、镜头、光栅盘和光电传感器组成的光路系统只能轴向排布,也令光电编码器的厚度难以缩小。 目前商品化的光电编码器中,体积较小的是SCANCON公司的增量式光电编码器,其分辨率为1 000线/r,尺寸为西24 mm×24 mm。 2.2.2磁编码器 磁编码器是近年发展起来的以一种新型电磁敏感元件为基础的检测装置。这种编码器使用具有交替变化磁场的永磁体盘代替光栅盘,使用巨磁电阻(GMR)等磁敏元件代替光电元件,把磁信号变为电信号。在T作中,磁编码器不易受尘埃和结露影响,抗振能力强,可靠性高,同时其结构简单紧凑,无需复杂的光源和光学元件,易于实现小型化。 但受充磁技术的制约,磁编码器的磁极数不可能提得很高,通过控制充磁,是磁场分布呈理想的正弦波,那么可通过波形细分技术进一步提高精度和分辨率。目前商品化的磁编码器分辨率可达l 000线/r。 2.3功率器件 在中小功率的应用中,一般使用电力MOsFET或IGBT作为功率器件。电力MOSFET具有易驱动、开关速度快的优点,但其导通损耗和耐压能力之间存在矛盾,故一直局限子在低压场合使用。IGBT是一种复合型的功率器件,整合了MOsFET和BJT的优点,驱动端类似MOsFET的结构,通过电压控制,所需功率小,而开关端则与BJT相似,耐压水平高、电流大、导通损耗小。 但其关断时间较长,因此开关损耗较大,而且其导通压降为固定值,与流过电流无关,在开关电压较高的时候才能体现出其低损耗的优点。 目前主流IGBT导通压降为1.5~2.5 V,而100 V耐压的MOSFET导通电阻一般在15~30mn。仿人机器人电源电压一

Copley+驱动调试帮助

Copley驱动调试帮助向导 1.到https://www.wendangku.net/doc/e416047717.html,/Motion/Products/Software/index.html 下载CME2软件并进行安装。 2.软件安装完成后,用RS232通讯线缆将驱动器与电脑串口相连,连接完成后给驱动器上电,再点击桌面“CME2”图标打开软件,如图1 所示: 图1 点击“OK”后,出现图2界面: 图2(以XSL-230-18驱动为例) 3.驱动器基本配置 点击“Amplifier”菜单下“Basic Setup”或点击图标工具栏第一个图标,出现图3窗口:

图3 在图3中可以看到当前驱动器的配置情况,如要改变设置,请点击“Change Settings”,进入“Motor Options”设置,出现图4窗口: 图4

Motor Family(电机类别): Brushless:无刷电机 Brush:有刷电机 Three Phase Stepper:三相步进电机 Motor Type(电机类型): Rotary:旋转电机 Linear:线性电机 再点击“Next”进入“Feedback Options”设置,出现图5窗口: 图5 Hall Type(Hall类型): None:没有Hall Digital:数字Hall Analog:模拟Hall(Copley直线电机专用) 当有Hall时,请勾上“Hall Phase Correction”。 Motor Encoder(电机编码器): None:没有 Primary Incremental:主通道数字编码器接口 Secondary Incremental:第二通道数字编码器接口 Analog:模拟信号编码器接口 Low Frequency Analog:低频模拟信号编码器接口(Copley直线电机专用)Position Encoder(位置编码器): None:没有 Primary Incremental:主通道数字编码器接口 Secondary Incremental:第二通道数字编码器接口 Analog:模拟信号编码器接口

直线模组调试说明

直线模组调试说明 目录 第一章,机械、硬件显示测试 (2) 第二章,COPLEY驱动器调试 (3) 第三章,PMAC控制器配置 (9) 第四章,上位界面设置 (25) 第五章,触发脉冲问题 (30) 第六章,控制器常见问题 (31)

第一章,机械、硬件显示测试 1,安装好机械结构后,保证直线模组可以运行整个行程,当模组运行到正负限位时,普通光耦板发光二极管会熄灭,从而验证是否到达限位;有的平台由于机械干涉,但也必须保证一个轴能触碰到一个限位,否则模组不能正常运行。 2,正常通电后,IMAC-400一共有4个指示灯亮分别是:D+5V,D+12V,D-12V,A+5V。 普通光耦板有发光二极管亮,一个轴有两个限位对应两个二极管,比如设备有两个直线模组轴,那么一共应该有4路发光二极管亮。(如图三轴实例) 3,高速光耦板正常通电后,有一个红色+5V指示灯亮,8路绿色通道指示灯亮。

第二章,COPLEY驱动器调试 1,打开CME2 V6.1文件夹,点击安装Setup.exe文件。 2,使用串口与CME2软件通讯,用RS232串口通讯时,配置波特率如图,COM端口按实际情况设置。 3,通讯上后点击Motor/Feedback,进入后点击OK确定,依次确定。 4,点击File菜单下Restore->Amplifier Data,把对应轴的配置down到驱动器,然后点击 save to flash。

5,点击菜单Control Panel,如图显示,用手推动模组运行时位置反馈会有数值变化,表明从读数头到驱动器的编码器线缆正常。 6,点击Tools菜单下的Manual Phase相序测试,用手缓慢推动电机运动,Hall的三相U、V、W会实时变化,右边的指针也会随着旋转,这代表模组的Hall线缆正常。

copley驱动器手册

Copley Camming User Guide P/N 95-00501-000 Revision 2 June 2008

Copley Camming User Guide .

TABLE OF CONTENTS About This Manual (5) 1:Operational Overview (7) 1.1: Host System Requirements (8) 1.2: Camming Operation (9) 1.3: Monitoring Camming Moves (10) 2:Camming Setup (11) 2.1: Start CME 2 (12) 2.2: Configure CME 2 Basic Setup for Camming Mode (13) 2.3: Configure Camming Parameters (14) 2.4: Load the Cam Tables (16) 3:Cam Tables (17) 3.1: Cam Table Specifications and Guidelines (18) 3.2: Overview of the Tables Tab (20) 3.3: Cam Table Procedures (22) 4:Application and Connection Examples (25) 4.1: Conveyer Camming Application Example (26) 4.2: Connection Examples (27) 5:Camming Configuration via ASCII (31) 5.1: Camming Mode Variables (32) 6:Camming Control via Indexer Program (35) 6.1: Indexer Camming Function (36) 6.2: Camming Internal Master Function (37)

Copley驱动器用户指南

枯藤老树昏鸦,小桥流水人家,古道西风瘦马。夕阳西下,断肠人在天涯。 Copley驱动器总结 一、驱动器简介 极性输入。 另外还需要一个独立的+24V电源给内部控制电路供电,这个电源跟主电源隔离开来。这个设计保证了主电源断开,+24v电源不断开的时候,驱动器能保留位置信息和通信。 CME2 CME2是对驱动器进行配置和调试的软件,通过RS232串口连接电脑和驱动器。所有的配置驱动器的操作都可以通过这个软件完成。电机数据存储为.CCM文件,驱动器数据存储为.CCX

文件。 二、驱动器操作 供电和接地图 电源 交流电压经过整流滤波输出直流驱动PWM逆变器。 +24V电源经过一个DC/DC变换器,产生控制电路所需的电压和一个+5V电源给HALL电路和编码器供电。 操作模式 控制环的嵌套和模式 驱动器可以使用最多三个嵌套的控制环,电流环、速度环、位置环在三种相关联的模式下控制电机

控制环图解 在位置模式下,驱动器用到了三个环。如上图所示,位置环驱动速度环,速度环驱动电流环。在速度模式下,速度环驱动电流环,在电流模式下,电流环直接由外部或内部的电流指令驱动。 环路基本属性 这些环路和一般的伺服控制环路有一些相同的属性 环路属性描述 命令输入每个环路给定一个需要达到的值。例如,速度环接受一个速度指令,它是期望的电动机速度 限制每个环路上都有限制,以保护电机或者机械系统 反馈伺服控制环接受反馈。如位置环把电机的实际位置作为反馈。 增益这些是伺服环路的数学方程中的常数值,通过这些值可以设置驱动器,提高驱动器的性能。调整这些值被称为环路整定。 输出环路产生的控制信号。这个信号可以被用作命令信号输入到另一控制回路或输入到功率放大器中。 电流模式和电流环 电流环的前端是一个限制模块,限制模块接收一个电流指令,然后输出一个受到限制的电流,这个电流减去实际的电流,得到一个偏差信号,经过P,I调节得到一个指令,这个指令然后施加到驱动器的功率级。

相关文档