STD_CU43USBSW_V1.0E. CUnet (MKY43) USB Unit. CU-43USB Software Manual

Similar documents
STD_HLS36USB_V1.0E. HLS(MKY36)USB Unit. HLS-36USB Product Manual

int fnvgetconfig(handle h, UINT32 id, const void *cfg, size_t sz);... 4

STD-HLS33-V6.3E. Hi-speed Link System. Center IC MKY33. User s Manual

Dialogic Multimedia API

I3000 User s Guide Revision: V1.20 Date: st 22 st

MPPC module. Function Specifications (mppcum1a) Version 1.0. K29-B60901e

Airence C Library v1.2 for Windows

AET60 API version 1.4 February Introduction...3 Features...3 Application Programming Interface...4

PusleIR Multitouch Screen Software SDK Specification. Revision 4.0

USB Dynamic Industrial Interface V A Universal Application Programming Interface To Data Acquisition Products Users Manual

ADSmartIO Driver Specification for Windows CE

Dialogic Multimedia API

Connection Guide (RS-232C) OMRON Corporation

AET60 BioCARDKey. Application Programming Interface. Subject to change without prior notice

EasySync Ltd. USB2-F-7x01 Programming Guide

ESP8266 Application Note Firmware Download Protocol

USB-to-I2C Basic. Hardware User s Manual.

One 32-bit counter that can be free running or generate periodic interrupts

MKY44-DA16A DATA SHEET

User's Manual. USB 2.0 Audio PCA with 16 Bit I/O, 4 x 4 Audio Mixer

DGILib USER GUIDE Atmel-42771A-DGILib_User Guide-09/2016

CLD BF70x CDC Library v.1.3 Users Guide Users Guide Revision 1.3. For Use With Analog Devices ADSP-BF70x Series Processors. Closed Loop Design, LLC

IO-Warrior Dynamic Library V1.5 for Windows

USB-910H API DLL and Include File Reference Manual

nrf5x Command Line Tools v9.2.0

CJ Series General-purpose Serial Connection Guide OMRON Corporation V500-R2 Series Fixed Laser-Type Barcode Reader

OPERATIONAL AMPLIFIER

The ZL_PMBus API Programmer s Guide

S1C17 Family EEPROM Emulation Library Manual

Call-back API. Polyhedra Ltd

OPERATIONAL AMPLIFIER

EEPROM Emulation with the ez80f91 MCU. Discussion

Developer s Guide. BlackBerry. Address Book API. Version 2.0

APPLICATION NOTE 9.15

CLD SC58x CDC Library v.1.00 Users Guide Users Guide Revision For Use With Analog Devices ADSP-SC58x Series Processors. Closed Loop Design, LLC

Hands-On Lab: HORM. Lab Manual Expediting Power Up with HORM

nrf5x Command Line Tools v9.4.0

Title: Migrating to Delcom USB HID Chip Set (Generation 2) from the Delcom USB custom driver Chip Set (Generation 1).

User Guide. Micron NAND Flash Simulator (NSIM)

ArduCAM USB Camera C/C++ SDK

APPLICATION NOTE. Atmel AT03261: SAM D20 System Interrupt Driver (SYSTEM INTERRUPT) SAM D20 System Interrupt Driver (SYSTEM INTERRUPT)

iqinterface User Manual Documentation

F²MC-8FX FAMILY 8-BIT MICROCONTROLLER MB95200H SERIES SPI SW REALIZATION USING GPIO APPLICATION NOTE

Linux based 3G Multimedia Mobile-phone API Specification

Application Note: AN00144 xcore-xa - xcore ARM Boot Library

AN022: The Bootloader Protocol

CUB-43PCI-LP/CUB-43PCIEXP Setup Guide

USB-to-I2C. Professional Hardware User s Manual.

ONE PHASE POWER METER (RN8209) SOLUTION

PMBus Power System Management Protocol Specification Part I General Requirements, Transport And Electrical Interface

ArduCAM USB Camera SDK

Multifunction Serial Interface (PDL_MFS) Features. General Description. When to Use a PDL_MFS Component. Quick Start 1.0

Modbus on SenseAir S8

ERRATA FOR. TCG TPM I2C Interface Specification. Errata Version 1.0 April 6, Family 2.0 Level 00 Revision 1.

Wireless M-Bus Host Controller Interface DLL

CANopen Win API. Version TK Engineering Oy

MOXA Sync Board API Programmer s Manual

S1R72U01 Technical Manual

NEXCOM. MiniPCIe NISK-NVRAM Library User Manual. Manual Rev.: V0.4

nrf5x Command Line Tools v9.4.0

Software library for MS5534 and MS5535

PROGRAMMING GUIDE. VIA Smart ETK SDK. v

IC CARD AND ESAM OPERATION

F²MC-8FX FAMILY MB95200H/210H SERIES HOW TO USE DBG PIN 8-BIT MICROCONTROLLER APPLICATION NOTE

PCI-DIO12 API Programming (Rev 1.0)

VueMetrix Firmware Uploader

ATAES132A Firmware Development Library. Introduction. Features. Atmel CryptoAuthentication USER GUIDE

Application Note: AN00142 xcore-xa - xcore ARM Bridge Library

CS 0449 Sample Midterm

AT11512: SAM L Brown Out Detector (BOD) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

Anybus CompactCom. Host Application Implementation Guide HMSI ENGLISH

CAN / RS485. Product Description. Technical Reference Note. Interface Adapter. Special Features

ProvideX. C-Library File IO Routines

PCAN-PassThru API. User Manual. Pass-Thru API and Connection of Pass-Thru Software to PEAK CAN Interfaces. Document version 1.1.

Common Misunderstandings from Exam 1 Material

Application Note: AN00152 xscope - Bi-Directional Endpoint

Native Configuration Manager API for Windows Operating Systems

F²MC-8FX FAMILY MB95200H/210H SERIES HOW TO USE DBG PIN 8-BIT MICROCONTROLLER APPLICATION NOTE

SAM4 Reset Controller (RSTC)

bytes per disk block (a block is usually called sector in the disk drive literature), sectors in each track, read/write heads, and cylinders (tracks).

SpinWarrior Dynamic Library V1.5 for Windows and Linux

BioTac C Library Manual for Cheetah

SPECIFICATIONS SUBJECT TO CHANGE WITHOUT NOTICE

F2MC-8FX EEPROM Library

vsphere Guest Programming Guide VMware vsphere Guest SDK 4.0

F²MC-16LX FAMILY MB90F897 DUAL OPERATION FLASH 16-BIT MICROCONTROLLER APPLICATION NOTE. Fujitsu Microelectronics Europe Application Note

STAND-ALONE PROGRAMMER

CSE 565 Computer Security Fall 2018

Acroloop Motion Controller CAcroLite C++ Class

USB-to-I2C. Ultra Hardware User s Manual.

S1V30080 Series I2C Interface Sample Program Specifications

Communications API. TEAM A : Communications and Integration Group. April 15, 1995

Interfacing Z8 Encore! XP MCUs with an I 2 C-Based Character LCD

Data-Sharing API Driver. User Manual

AT03262: SAM D/R/L/C System Pin Multiplexer (SYSTEM PINMUX) Driver. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

Revision: 09/21/ East Main Pullman, WA (509) Voice and Fax

Hitachi Europe Ltd. ISSUE : app026/1.0 APPLICATION NOTE DATE : 20/9/94

Introduction. Overview

Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification. Version 0.9 April 1, 2004

FAQ. For ICPDAS DCON (I-7000/8000/87K) series modules [Version 1.0]

Transcription:

STD_CU43USBSW_V1.0E CUnet (MKY43) USB Unit CU-43USB Software Manual

Introduction This document describes API included with CU-43USB unit. Before using the product, please check the latest information on our website. Target readers Those who do the programming with CU-43USB to build CUnet. Prerequisites Network technology Semiconductor products (especially microcontrollers and memory). Windows Application Programming Related manuals CUnet Introduction Guide (A Guide to the CUnet Protocol ) CUnet Technical Guide for Network CUnet IC MKY43 User s Manual CU-43USB Product Manual Note Some terms in this manual are different from those used on our website and in our product brochures. The brochure uses ordinary terms to help many people in various industries understand our products. Please understand technical information on CUnet Family based on technical documents (manuals). No part of this document may be copied or reproduced in any form or by any means without prior written permission from StepTechnica Co., Ltd. The information in this document is subject to change without prior notice. Every effort has been made to ensure the content of this document, but should you have any notice, such as your suspicious point or omissions, please contact your retailer, or to StepTechnica.

Revision history Content Version Date Page Description 1.0E AUG 2018 Issued the first edition

Table of contents Chapter 1 Summary...1 Chapter 2 System requirements...1 Chapter 3 Copyright and disclaimer...1 Chapter 4 File structure...2 Chapter 5 Limitations...2 5.1 Multi-thread...2 5.2 Timeout in USB communication...2 5.3 Power saving mode...2 Chapter 6 API specifications...3 6.1 CubGetVersion...4 6.2 CubGetLastError...5 6.3 CubCountDeice...6 6.4 CubBoardID...7 6.5 CubSearchBoard... 8-9 6.6 CubStartAutoTrans... 10-11 6.7 CubStopAutoTrans...12 6.8 CubOpenHandle...13 6.9 CubCloseHandle...14 6.10 CubResetMKY43...15 6.11 CubReadWord...16 6.12 CubWriteWord...17 6.13 CubReadProtect...18 6.14 CubWriteProtect...19 6.15 CubReadGM...20 6.16 CubReadMFR...21 6.17 CubReadData...22 6.18 CubWriteData...23 6.19 CubGetFirmwareVersion...24 Chapter 7 Appendix... 25-26 7.1 Sample program... 25-26 Tables Table 6-1 Table 6-2 Table 6-3 Table 6-4 Table 6-5 API functions...3 Version numbering...4 list...5 Data renewal cycle setting list...10 Version numbering...24

Chapter 1 Summary StepTechnica Co., Ltd., provides an API to access CU-43USB for the user application. This document is intended for use with firmware version "V_1.0" and API version "1.0.0" of CU-43USB. Please download the API from StepTechnica website's 'Downloads' page. URL:http://www.steptechnica.com/en/download/index.html Chapter 2 System requirements The API works correctly in the following operating systems. Windows 8.1( 32bit, 64bit) Windows 8( 32bit, 64bit) Windows 7( 32bit, 64bit) This API can be called from Microsoft Visual Studio and VB6 etc. Chapter 3 Copyright and disclaimer The copyright of all documents / program / program sources are belong to StepTechnica Co., Ltd. The individuals, companies or other parties only who accept the cautions written below and use our CU-43USB is licensed to copy or use of these works of StepTechnica Co., Ltd. You cannnot revise, re-distribute, duplicate, and use some or all of the work other than this product without permission from StepTechnica Co., Ltd. 1 StepTechnica Co., Ltd. assumes no responsibility for any results caused by using all softwares downloaded from our website. 2 Use API in proper ways with its instructions. 3 All specifications and contents are subject to change without prior notice. We do not guarantee for any compatibility in the future. 4 We can not support for inquiries regarding OS or a development environment. 5 If you have found an error, please contact our system development department. 1

Chapter 4 File structure The files in DLL folder are described in the following. DLL + ---- [cu43usb.dll] : DLL body. Before your use, copy it to the system folder of Windows or the directory in which user program using this DLL is stored. + ---- [cu43usb.lib] : Import library + ---- [cu43usb.h] : DLL header file. Please include after than Windows.h. Chapter 5 Limitations This chapter describes limitations when creating an application using this API. 5.1 Multi-thread This API cannot be used from multiple threads at the same time. Consider not to generate a collective call if the application has multithreaded structure. 5.2 Timeout in USB communication In this API, the maximum waiting time(timeout)of data transmission and reception between CU-43USB is 1 second. Even if the timeout period is over, sending and receiving may not end in some of the system environments. of the API function returns an error when timeout has been occurred. If a timeout occurs, the CUnet network and periodic update function stops in the internal API. The CUnet network and periodic transmission function was able to stop normally, the following is set to the error code. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET(9) If it fails to stop CUnet network and periodic transmission function, the following is set to the error code. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET(10) After the timeout occurs, close the handle which is used in CubCloseHandle function, please reobtain a handle at CubOpenHandle function. Until a handle is reobtained, the return parameter of the API function other than CubGetVer sion, CubCountDevice, CubSearchBoard, CubGetLastError, CubOpenHandle and CubCloseHandle returns an error. At that time, CubGetLastError function returns CUB_ERR_REACQUISITION_OF_HANDLE(11). 5.3 Power saving mode This product is not applied to the power saving mode of PC( personal computer). 2

Chapter 6 API specifications This chapter describes API specifications. This API is prepared for easy operation of CU-43USB for user application. In addition to the normal function to read and write to MKY43, this API has an internal function to sample all global memory and MFR of MKY43 at specified cycle. This function is called "periodic update". The API function list is shown in Table 6-1. Table 6-1 API functions API function CubGetVersion CubGetLastError CubOpenHandle CubCloseHandle CubCountDevice CubBoardID CubSearchBoard CubResetMKY43 CubStartAutoTrans CubStopAutoTrans CubReadWord CubWriteWord CubReadProtect CubWriteProtect CubReadGM CubReadMFR CubReadData CubWriteData CubGetFirmwareVersion Description Obtains the version number of API Obtains the termination status of API function Opens a handle of CU-43USB Closes a handle obtained by CubOpenHandle Obtains the number of CU-43USB connected to PC Obtains the board ID Obtains the number of CU-43USB connected to PC and obtain the board ID Orders a reset to MKY43 Starts periodic update Stops periodic update Reads 2 bytes of data from the specified address Writes 2 bytes of data to the specified address Data read from global memory with hazard protect function Data write to global memory with hazard protect function Obtains the latest data of all global memory by periodic update Obtains the latest data of all MFR by periodic update Reads data of the specified word length from the specified address Writes data of the specified word length to the specified address Obtains the firmware version number of CU-43USB 3

6.1 CubGetVersion UINT CubGetVersion(void); Obtains the version number of API None Version number of API (Hexadecimal BCD code) ( Major Number + Minor Number + Update Number ) The error code and error factor returned by the CubGetLastError after executing this function is as Note The configuration of API version number is as shown in Table 6-2. The reasons for updating the version number are as Major Number : The revision with no backword compatibility such as API specification change. Minor Number : The revision with backword compatibility such as an addition of API function. Update Number : The revision with no specification change such as bug fixes. Table 6-2 Version numbering Major Number Minor Number Update Number (Example) (Bit 15-8) (Bit 7-4 ) (Bit 3-0 ) 0x0102 1 0 2 0x1398 13 9 8 4

6.2 CubGetLastError UINT CubGetLastError(void); Obtains the termination state of the API function called last time None Note Returns the error code defined in cu43usb.h. The error codes defined in cu43usb.h. are shown in Table 6-3. Table 6-3 list Error Code Value Content 0 CUB_ERR_DEVICENOTEXIST 1 Device does not exist. CUB_ERR_ALREADYOPENED 2 Handle has been already opened. CUB_ERR_CLOSED 3 'CubOpenHandle' has never been called. CUB_ERR_INVALIDPARAM 4 Called with invalid parameter. CUB_ERR_NORESOUCE 5 No resource to execute the process 6 CUB_ERR_AUTO_TRANS_ALREADY_START 7 Periodic update has already started. CUB_ERR_AUTO_TRANS_STOP 8 Periodic update has not started. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET 9 Timeout has occurred during USB communication, and CUnet communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET 10 Timeout has occurred during USB communication, and CUnet communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE 11 Handle has not been reobtained. CUB_ERR_NOT_SUPPORT_FIRM_VERSION 12 Unsupported firmware version CUB_ERR_INVALID_SEQUENCE_NUMBER 13 Invalid sequence number CUB_NOTCALLYET 99 CUBAPI has never been called. 5

6.3 CubCountDevice INT CubCountDevice(void); Obtains the number of CU-43USB connected to PC None Error Code Note Returns the number of CU-43USB connected to PC -1 : 5 or more 0 : Not connected 1~4 : 1 to 4 The error code and error factor returned by the CubGetLastError after executing this function is as No more than five devices can be connected to a PC. 6

6.4 CubBoardID INT CubBoardID(HANDLE CUBHandle); Obtains board ID of CU-43USB HANDLE CUBHandle Succeeded:Board ID (0 to 3)is returned. Failed Error Code : -1 is returned. Handle value of CU-43USB The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 7

6.5 CubSearchBoard BOOL CubSearchBoard(BYTE *board_num, BYTE *board_id_list); Obtains the number of CU-43USB connected to PC and obtain the Board ID list *board_num *board_id_list Specify the address to the byte type variable in which the number of boards is set. The meanings of the set values are as -1 : 5 or more 0 : Not connected 1 ~ 4 : Number of boards identified To receive the board ID, specify a pointer to an array with four byte types. It is also possible to specify NULL. If NULL has been specified, only the number of boards is returned. The meanings of the set values are as 0x00 ~ 0x03 : Board ID 0x80 : Handle value has already been obtained by CubOpenHandle. 0xFF : No board has been identified. Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM * board_num is NULL CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET to be stopped. CUB_ERR_INVALID_SEQUENCE_NUMBER communication failed Invalid sequence number 8

Addendum The board ID is set by Option switch. If two or more CU-43USB devices are connected, it can be distinguished by board IDs. This API function can identify up to four CU-43USB devices. Specify the byte type array as a parameter as shown below. BYTE board_num; BYTE board_id_list[4]; CubSearchBoard(&board_num, &board_id_list[0]); As an example, three CU-43USB devices are connected to the PC, and each board IDs are set in sequence ; 1st board ID = 0, 2nd board ID = 1, 3rd board board ID = 2. board_num = 3; board_id_list[0] = 0 board_id_list[1] = 2 board_id_list[2] = 1 board_id_list[3] = 0xFF If the devices have been identified by the PC in sequence with first, third, and second, and run CubSearchBoard, board number and its IDs are returned as board_num = 3; board_id_list[0] = 0 board_id_list[1] = 2 board_id_list[2] = 1 board_id_list[3] = 0xFF 9

6.6 CubStartAutoTrans BOOL CubStartAutoTrans(HANDLE CUBHandle, WORD MfCnt); Starts periodic update of all global memory and MFR of CU-43USB The update cycle can be specified in units of 125 μ s. The updated data is retained inside the API. Retained data can be obtained with CubReadGM, CubReadMFR. HANDLE CUBHandle Handle value of CU-43USB WORD MfCnt Set update cycle. The update cycle can be specified in units of 125 μ s from 1 ms to 100 ms. Regarding the update cycle interval, refer to Table 6-4 to set the periodic interval. The setting values other than in Table 6-4 will be an error. Table 6-4 Update cycle setting list Setting value Update cycle(μ sec) 8 1,000(1msec) 9 1,125 10 1,250 : : 797 99,625 798 99,750 799 99,875 800 100,000(100msec) 10

Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_AUTO_TRANS_ALREADY_START CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET Invalid CUBHandle is specified. MfCnt is out of range Periodic update has already started. communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number Note Please be aware that periodic updating may not be executed due to the specifications of the PC, or other applications running on the same PC. When using CubReadGM, CubReadMFR, please use this API to enable periodic update. 11

6.7 CubStopAutoTrans BOOL CubStopAutoTrans(HANDLE CUBHandle); Stops periodic update of all global memory and MFR of CU-43USB HANDLE CUBHandle Handle value of CU-43USB Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_AUTO_TRANS_STOP Invalid CUBHandle is specified. Periodic update has not started. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 12

6.8 CubOpenHandle HANDLE CubOpenHandle(int index_no); Opens handles to the CU-43USB int index_no Index number Succeeded:1 or greater value is returned. Failed Addendum : -1(INVALID_HANDLE_VALUE)is returned. You can specify an index number from 0 to 3. If just one CU-43USB is connected to PC, set 0. For more information, see "Addendum". The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_ALREADYOPENED CUB_ERR_DEVICENOTEXIST CUB_ERR_NOT_SUPPORT_FIRM_VERSION CUB_ERR_REACQUISITION_OF_HANDLE Handle has been already opened. Device does not exist. Unsupported firmware version Invalid sequence number It's not necessary to run CubSearchBoard when just one CU-43USB is connected to PC. If two or more CU-43USB devices are connected to PC, you must run "CubSearchBoard" in advance to check which CU-43USB to manipulate. As an example, three CU-43USB devices are connected to the PC, and each board IDs are set in sequence ; 1st board ID = 0, 2nd board ID = 1, 3rd board board ID = 2. To obtain the handle value of Board ID=2, operate as BYTE board_num; BYTE board_id_list[4]; CubSearchBoard(&board_num, &board_id_list[0]); Assuming that the results of executing in the above was the following. board_id_list[0]=0, board_id_list[1]=2, board_id_list[2]=1, board_id_list[3]=0xff In this case, you see that index number 1 is the board ID=2. That means 1 is the index number, the parameter of CubOpenHandle. Close the handle with CubCloseHandle at finishing the program. 13

6.9 CubCloseHandle BOOL CubCloseHandle(HANDLE CUBHandle); Closes the handle obtained by CubOpenHandle Stops periodic update as well if it's running HANDLE CUBHandle Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. Handle value of CU-43USB The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_INVALID_SEQUENCE_NUMBER Invalid CUBHandle is specified. Invalid sequence number 14

6.10 CubResetMKY43 BOOL CubResetMKY43(HANDLE CUBHandle); Resets MKY43 HANDLE CUBHandle Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. Handle value of CU-43USB The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 15

6.11 CubReadWord BOOL CubReadWord(HANDLE CUBHandle, const ULONG Adr, WORD *Dat); Reads 2 bytes of data from the specified address HANDLE CUBHandle const ULONG Adr WORD *Dat Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. Handle value of CU-43USB Address value Input conditions are the following. Multiples of 2 Input range : 0x0000-0xF02 The storage address of read data The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Invalid CUBHandle is specified. Adr is out of range. Adr value is not multiple of 2. NULL has been specified to *Dat. communication was successfully stopped. communication failed to be stopped. Handle has not been reobtained. Invalid sequence number 16

6.12 CubWriteWord BOOL CubWriteWord(HANDLE CUBHandle, const ULONG Adr, const WORD Dat); Writes 2 bytes of data from the specified address HANDLE CUBHandle const ULONG cconst WORD Dat Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The handle value of CU-43USB Adr address value Input conditions are the following. Multiples of 2 Input range : 0x0000-0xF02 Write data The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. Adr is out of range. Adr value is not multiple of 2. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 17

6.13 CubReadProtect BOOL CubReadProtect (HANDLE CUBHandle, WORD BlockNo, void *Data); Obtains the latest data of all control words by periodic update Error is returned when CubReadProtect has been called while periodic update was stopping. HANDLE CUBHandle WORD BlockNo void *Data Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The handle value of CU-43USB Memory block number Input conditions are the following. Input range : 0 to 63 The storage address of 8 bytes read data The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET Invalid CUBHandle is specified. BlockNo is out of range. NULL has been specified to *Data. communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 18

6.14 CubWriteProtect BOOL CubWriteProtect (HANDLE CUBHandle, WORD BlockNo, void *Data); Writes data to global memory using hazard protect function HANDLE CUBHandle WORD BlockNo void *Data The handle value of CU-43USB Memory block number Input conditions are the following. Input range : 0 to 63 The storage address of 8 bytes write data Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. NULL has been specified to *Data. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 19

6.15 CubReadGM BOOL CubReadGM (HANDLE CUBHandle, void*data); Obtains the latest data of all global memory by periodic update Error is returned when CubReadGM has been called while periodic update was stopping. HANDLE CUBHandle void *Data Succeeded:TRUE(1)is returned. Failed Note : FALSE(0)is returned. The handle value of CU-43USB The storage address of 512 bytes data The error codes and error factors returned by the CUBGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_AUTO_TRANS_STOP CUB_ERR_REACQUISITION_OF_HANDLE Invalid CUBHandle is specified. NULL has been specified to *Data. Periodic update is stopping. Handle has not been reobtained. CubReadGM is an API that obtains data by periodic update, which is not accessed to MKY43 in direct. When obtaining control word from MKY43 directly, use "CubReadWord", "CubReadData","CubReadProtect". 20

6.16 CubReadMFR BOOL CubReadMFR (HANDLE CUBHandle, void*data); Obtains the latest data of MFR by periodic update Error is returned when CubReadMFR has been called while periodic update was stopping. HANDLE CUBHandle void *Data Succeeded:TRUE(1)is returned. Failed Note : FALSE(0)is returned. The handle value of CU-43USB The storage address of 8 bytes data The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_AUTO_TRANS_STOP CUB_ERR_REACQUISITION_OF_HANDLE Invalid CUBHandle is specified. NULL has been specified to *Data. Periodic update is stopping Handle has not been reobtained. CubReadMFR is an API that obtains data by periodic update, which is not accessed to MKY43 in direct. When obtaining MFR from MKY43 directly, use "CubReadWord", "CubReadData". 21

6.17 CubReadData BOOL CubReadData (HANDLE CUBHandle, WORD Adr, WORD WordLen, void *Data); Reads data of the specified word length from the specified address HANDLE CUBHandle WORD Adr WORD WordLen void *Data Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The handle value of CU-43USB Address value Input conditions are the following Multiples of 2 Input range : 0x0000-0x07FE Word length Input conditions are the following Input range : 0x0001-0x0400 The storage address of read data The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. Specified Adr is out of range. Adr value is not multiple of 2. Specified WordLen is out of range. Specified read range exceeded 0x800. NULL has been specified to *Data. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication was successfully stopped. communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 22

6.18 CubWriteData BOOL CubWriteData(HANDLE CUBHandle, WORD Adr, WORD WordLen, void *Data); Writes data of the specified word length to the specified address HANDLE CUBHandle WORD Adr WORD WordLen The handle value of CU-43USB Address value Input conditions are the following Multiples of 2 Input range : 0x0000-0x07FE Word length Input conditions are the following. void *Data Input range : 0x0001-0x0400 The storage address of write data Succeeded:TRUE(1)is returned. Failed : FALSE(0)is returned. The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET Invalid CUBHandle is specified. Specified Adr is out of range. Adr value is not multiple of 2. Specified WordLen is out of range. Specified write range exceeded 0x800. NULL has been specified to *Data. communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET communication failed to be stopped. CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER Handle has not been reobtained. Invalid sequence number 23

6.19 CubGetFirmwareVersion Note INT CubGetFirmwareVersion(HANDLE CUBHandle); Obtains the firmware version number of CU-43USB HANDLE CUBHandle The handle value of CU-43USB. Version number of firmware (Hexadecimal BCD code) ( Major Number + Minor Number + Update Number ) The error codes and error factors returned by the CubGetLastError after executing this function are as CUB_ERR_INVALIDPARAM Invalid CUBHandle is specified. CUB_ERR_USB_TIMEOUT_SUCCESS_STOP_CUNET communication was successfully stopped. CUB_ERR_USB_TIMEOUT_FAILED_STOP_CUNET CUB_ERR_REACQUISITION_OF_HANDLE CUB_ERR_INVALID_SEQUENCE_NUMBER communication failed to be stopped. Handle has not been reobtained. Invalid sequence number The configuration of firmware version number is as shown in Table 6-5. The reasons for updating the version number are as Major Number : The revision with no backword compatibility such as firmware specification change. Minor Number : The revision with backword compatibility such as an addition of firmware function. Update Number : The revision with no specification change such as bug fixes. Table 6-5 Version numbering (Example) Major Number (Bit 15-8) Minor Number (Bit 7-4 ) Update Number (Bit 3-0 ) 0x0102 1 0 2 0x1398 13 9 8 24

Chapter 7 Appendix 7.1 Sample program The sample of initializing and finishing program to control CU-43USB is the following. For the structure and functions of MKY43 register, please refer to "Chapter 5: Register Reference" described in "MKY43 User's Manual". int main(int argc, char argv[]) { unsigned char buf[0x580]; unsigned char board_count; unsigned char board_id_list[4]; /** Check an API version number */ int version=cubgetversion(); if (version < 0x100 version > 0x199){ printf("this version of cu43usb.dll is incompatible\n"); exit(1); } /** Search CU-43USB * Up to four CU-43USB devices can be identified. When five or more devices are connected to PC, it returns an error. * The number of CU-43USB devices connected to PC and its Board ID list are returned. * It's not necessary to execute CubSearchBoard when just one CU-43USB device is connected to PC. */ if(cubsearchboard(&board_count,&board_id_list[0]) == FALSE){ exit(1); } if (board_count == 0){ printf("no CU-43USB is connected to PC. \n"); exit(1); } else if (board_count == 0xFF){ printf("number of CU-43USB devices connected to PC exceeded the limit.\n"); exit(1); } /** A handle corresponded with CU-43USB to control is generated. * If only one CU-43USB is connected to PC, open handle with 0 parameter. */ HANDLE dev_handle; dev_handle=cubopenhandle(0); if (dev_handle == INVALID_HANDLE_VALUE){ printf("failed to obtain a handle value to CU-43USB.\n"); exit(1); } memset(buf, 0, sizeof(buf)); 25

/** Initializing CU-43USB */ // Clear global memory CubWriteData(dev_handle, 0, 0x100, buf); // Clear mail sending buffer CubWriteData(dev_handle, 0x200, 0x80, buf); // Clear mail receiving buffer 0 CubWriteData(dev_handle, 0x400, 0x80, buf); // Clear mail sending buffer 1 CubWriteData(dev_handle, 0x500, 0x80, buf); // Transfer to GM mode CubWriteWord(dev_handle, 0x366, 0x8000); // Change setting to SA-1, OWN-1, BPS-3Mbps CubWriteWord(dev_handle, 0x356, 0x0141); // Release GMM mode CubWriteWord(dev_handle, 0x366, 0); /** Start communication * Set "1" to START bit of SCR to start network. */ CubWriteWord(dev_handle, 0x366, 0x0100); /** Start periodic update. It's not necessary to execute when CubReadGM, CubReadMFR are not used. * Data sending at 4000 μ s (4msec)cycle */ CubStartAutoTrans(dev_handle, 32); /** -- Describe user process here -- **/ /** Stop periodic update. (It's not necessary to execute when CubStartAutoTrans is not used.)*/ CubStopAutoTrans(dev_handle); /** Stop CUnet communication **/ // Set 0 to SCR to stop CUnet communication. CubWriteWord (dev_handle, 0x366, 0x0000); } /** Close the generated handle. */ CubCloseHandle(dev_handle); return 0; 26

Notes 1. The information in this document is subject to change without prior notice. Before using this product, please confirm that this is the latest version of this document. 2. Technical information in this document, such as explanations and circuit examples, are just for references to use this product in a proper way. When actually using this product, always fully evaluate the entire system according to the design purpose based on considerations of peripheral circuits and environment. We assume no responsibility for any incompatibility between this product and your system. 3. We assume no responsibility whatsoever for any losses or damages arising from the use of the information, products, and circuits in this document, or for infringement of patents and any other rights of a third party. 4. When using this product and the information and circuits in this document, we do not guarantee the right to use any property rights, intellectual property rights, and any other rights of a third party. 5. This product is not designed for use in critical applications, such as life support systems. Contact us when considering such applications. 6. No part of this document may be copied or reproduced in any form or by any means without prior written permission from StepTechnica Co., Ltd. Developed and manufactured by StepTechnica Co., Ltd. 757-3, Shimofujisawa, Iruma, Saitama http://www.steptechnica.com/en/index.html info@steptechnica.com CUnet(MKY43)USB Unit CU-43USB Software Manual Document No:STD_CU43USBSW_V1.0E Issued: August 2018