NEW DATABASE - 350 MILLION DATASHEETS FROM 8500 MANUFACTURERS
V850E/IF3 V850E/IG3 PD70F3451 PD70F3452 PD70F3453 PD70F3454 U18725EJ1V0AN00 - Datasheet Archive
V850E/IF3, V850E/IG3 32-bit Single-Chip Microcontrollers Sample Programs for Serial Communication (CSIB) V850E/IF3: PD70F3451
Preliminary Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 32-bit Single-Chip Microcontrollers Sample Programs for Serial Communication (CSIB) V850E/IF3 V850E/IF3: PD70F3451 PD70F3451 PD70F3452 PD70F3452 V850E/IG3 V850E/IG3: PD70F3453 PD70F3453 PD70F3454 PD70F3454 Document No. U18725EJ1V0AN00 U18725EJ1V0AN00 (1st edition) Date Published August 2007 N 2007 Printed in Japan [MEMO] 2 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN NOTES FOR CMOS DEVICES 1 VOLTAGE APPLICATION WAVEFORM AT INPUT PIN Waveform distortion due to input noise or a reflected wave may cause malfunction. If the input of the CMOS device stays in the area between VIL (MAX) and VIH (MIN) due to noise, etc., the device may malfunction. Take care to prevent chattering noise from entering the device when the input level is fixed, and also in the transition period when the input level passes through the area between VIL (MAX) and VIH (MIN). 2 HANDLING OF UNUSED INPUT PINS Unconnected CMOS device inputs can be cause of malfunction. If an input pin is unconnected, it is possible that an internal input level may be generated due to noise, etc., causing malfunction. CMOS devices behave differently than Bipolar or NMOS devices. Input levels of CMOS devices must be fixed high or low by using pull-up or pull-down circuitry. Each unused pin should be connected to VDD or GND via a resistor if there is a possibility that it will be an output pin. All handling related to unused pins must be judged separately for each device and according to related specifications governing the device. 3 PRECAUTION AGAINST ESD A strong electric field, when exposed to a MOS device, can cause destruction of the gate oxide and ultimately degrade the device operation. Steps must be taken to stop generation of static electricity as much as possible, and quickly dissipate it when it has occurred. Environmental control must be adequate. When it is dry, a humidifier should be used. It is recommended to avoid using insulators that easily build up static electricity. Semiconductor devices must be stored and transported in an anti-static container, static shielding bag or conductive material. All test and measurement tools including work benches and floors should be grounded. The operator should be grounded using a wrist strap. Semiconductor devices must not be touched with bare hands. Similar precautions need to be taken for PW boards with mounted semiconductor devices. 4 STATUS BEFORE INITIALIZATION Power-on does not necessarily define the initial status of a MOS device. Immediately after the power source is turned ON, devices with reset functions have not yet been initialized. Hence, power-on does not guarantee output pin levels, I/O settings or contents of registers. A device is not initialized until the reset signal is received. A reset operation must be executed immediately after power-on for devices with reset functions. 5 POWER ON/OFF SEQUENCE In the case of a device that uses different power supplies for the internal operation and external interface, as a rule, switch on the external power supply after switching on the internal power supply. When switching the power supply off, as a rule, switch off the external power supply and then the internal power supply. Use of the reverse power on/off sequences may result in the application of an overvoltage to the internal elements of the device, causing malfunction and degradation of internal elements due to the passage of an abnormal current. The correct power on/off sequence must be judged separately for each device and according to related specifications governing the device. 6 INPUT OF SIGNAL DURING POWER OFF STATE Do not input signals or an I/O pull-up power supply while the device is not powered. The current injection that results from input of such a signal or I/O pull-up power supply may cause malfunction and the abnormal current that passes in the device at this time may cause degradation of internal elements. Input of signals during the power off state must be judged separately for each device and according to related specifications governing the device. Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 3 Caution: This product uses SuperFlash® technology licensed from Silicon Storage Technology, Inc. SuperFlash is a registered trademark of Silicon Storage Technology, Inc. in several countries including the United States and Japan. · The information contained in this document is being issued in advance of the production cycle for the product. The parameters for the product may change before final production or NEC Electronics Corporation, at its own discretion, may withdraw the product prior to its production. · No part of this document may be copied or reproduced in any form or by any means without the prior written consent of NEC Electronics. NEC Electronics assumes no responsibility for any errors that may appear in this document. · NEC Electronics does not assume any liability for infringement of patents, copyrights or other intellectual property rights of third parties by or arising from the use of NEC Electronics products listed in this document or any other liability arising from the use of such products. No license, express, implied or otherwise, is granted under any patents, copyrights or other intellectual property rights of NEC Electronics or others. · Descriptions of circuits, software and other related information in this document are provided for illustrative purposes in semiconductor product operation and application examples. The incorporation of these circuits, software and information in the design of a customer's equipment shall be done under the full responsibility of the customer. NEC Electronics assumes no responsibility for any losses incurred by customers or third parties arising from the use of these circuits, software and information. · While NEC Electronics endeavors to enhance the quality, reliability and safety of NEC Electronics products, customers agree and acknowledge that the possibility of defects thereof cannot be eliminated entirely. To minimize risks of damage to property or injury (including death) to persons arising from defects in NEC Electronics products, customers must incorporate sufficient safety measures in their design, such as redundancy, fire-containment and anti-failure features. · NEC Electronics products are classified into the following three quality grades: "Standard", "Special", and "Specific". The "Specific" quality grade applies only to NEC Electronics products developed based on a customer-designated "quality assurance program" for a specific application. The recommended applications of an NEC Electronics product depend on its quality grade, as indicated below. Customers must check the quality grade of each NEC Electronics products before using it in a particular application. "Standard": Computers, office equipment, communications equipment, test and measurement equipment, audio and visual equipment, home electronic appliances, machine tools, personal electronic equipment and industrial robots. "Special": Transportation equipment (automobiles, trains, ships, etc.), traffic control systems, anti-disaster systems, anti-crime systems, safety equipment and medical equipment (not specifically designed for life support). "Specific": Aircraft, aerospace equipment, submersible repeaters, nuclear reactor control systems, life support systems and medical equipment for life support, etc. The quality grade of NEC Electronics products is "Standard" unless otherwise expressly specified in NEC Electronics data sheets or data books, etc. If customers wish to use NEC Electronics products in applications not intended by NEC Electronics, they must contact an NEC Electronics sales representative in advance to determine NEC Electronics' willingness to support a given application. (Note) (1) "NEC Electronics" as used in this statement means NEC Electronics Corporation and also includes its majority-owned subsidiaries. (2) "NEC Electronics products" means any product developed or manufactured by or for NEC Electronics (as defined above). M5 02. 11-1 4 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN INTRODUCTION Cautions 1. This Application Note explains a case where the V850E/IG3 V850E/IG3 is used as a representative microcontroller. Use this Application Note for your reference when using the V850E/IF3 V850E/IF3. 2. Download the program used in this manual from the page of Programming Examples ( ) in the NEC Electronics Website (http://www.necel.com/). 3. This sample program is provided for reference purposes only and operations are therefore not subject to guarantee by NEC Electronics Corporation. When using sample programs, customers are advised to sufficiently evaluate this product based on their systems, before use. 4. When using sample programs, reference the following startup routine and link directive file and adjust them if necessary. · Startup routine: ig3_start.s · Link directive file: ig3_link.dir Target Readers This Application Note is intended for users who understand the functions of the V850E/IF3 V850E/IF3 (PD70F3451 PD70F3451, 70F3452 70F3452), and V850E/IG3 V850E/IG3 (PD70F3453 PD70F3453, 70F3454 70F3454), and who design application systems that use these microcontrollers. Purpose This manual is intended to give users an understanding of the basic functions of the V850E/IF3 V850E/IF3 and V850E/IG3 V850E/IG3, using the application programs. How to Use This Manual It is assumed that the reader of this Application Note has general knowledge in the fields of electrical engineering, logic circuits, and microcontrollers. For details of hardware functions (especially register functions, setting methods, etc.) and electrical specifications See the V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Hardware User's Manual. For details of instruction functions See the V850E1 V850E1 Architecture User's Manual. Conventions Data significance: Higher digits on the left and lower digits on the right Active low representation: xxx (overscore over pin or signal name) Memory map address: Higher addresses on the top and lower addresses on Note: Footnote for item marked with Note in the text Caution: Information requiring particular attention Remark: Supplementary information the bottom Numeric representation: Binary . xxxx or xxxxB Decimal . xxxx Hexadecimal . xxxxH Prefix indicating the power of 2 (address space, memory capacity): K (kilo): 210 = 1,024 M (mega): 220 = 1,0242 G (giga): 30 3 2 = 1,024 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 5 The function lists are structured as follows. Hardware name (symbol) [Function] Function description [Function name] Name of sample function [Argument(s)] Type and overview of argument(s) [Processing content] Processing content of sample function [SFR(s) used] Register name and setting content [call function(s)] Name and function of call function(s) [Variable(s)] Type, name, and overview of variable(s) used in sample function [Interrupt(s)] Name of function [Interrupt source(s)] Name [File name] Name of corresponding sample program file [Caution(s)] Caution(s) upon function usage Interrupt function [Function name] Name of interrupt function [Servicing content] Servicing content of interrupt function [SFR(s) used] Name of interrupt and conditions for occurrence [call function(s)] None [Variable(s)] Name of variable, function [File name] 6 Name of corresponding sample program file [Caution(s)] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN Related Documents The related documents indicated in this publication may include preliminary versions. However, preliminary versions are not marked as such. Documents related to V850E/IF3 V850E/IF3 and V850E/IG3 V850E/IG3 Document Name Document No. V850E1 V850E1 Architecture User's Manual U14559E U14559E V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Hardware User's Manual U18279E U18279E V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Serial Communication To be prepared (UARTA) Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Serial Communication To be prepared (UARTB) Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Serial Communication (CSIB) This manual Application Note 2 V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Serial Communication (I C) To be prepared Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for DMA Function Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Timer M Application Note To be prepared V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Watchdog Timer Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Timer AA Application Note To be prepared V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Timer AB Application Note To be prepared V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Timer T Application Note To be prepared V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Port Function Application Note To be prepared V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Clock Generator Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Standby Function Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Interrupt Function Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for A/D Converters 0 and 1 To be prepared Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for A/D Converter 2 Application To be prepared Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 Sample Programs for Low-Voltage Detector (LVI) To be prepared Function Application Note V850E/IF3 V850E/IF3, V850E/IG3 V850E/IG3 6-Phase PWM Output Control by Timer AB, Timer Q U18717E U18717E Option, Timer AA, A/D Converters 0 and 1 Application Note Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 7 CONTENTS CHAPTER 1 CONTINUOUS TRANSFER MODE . 9 1.1 1.2 1.3 1.4 1.5 1.6 Continuous Transfer Mode (Master Mode, Transmission Mode).9 Continuous Transfer Mode (Master Mode, Reception Mode).14 Continuous Transfer Mode (Master Mode, Transmission/Reception Mode) .19 Continuous Transfer Mode (Slave Mode, Transmission Mode).25 Continuous Transfer Mode (Slave Mode, Reception Mode).30 Continuous Transfer Mode (Slave Mode, Transmission/Reception Mode) .36 CHAPTER 2 SINGLE TRANSFER MODE . 43 2.1 2.2 2.3 2.4 2.5 2.6 8 Single Transfer Mode (Master Mode, Transmission Mode).43 Single Transfer Mode (Master Mode, Reception Mode).48 Single Transfer Mode (Master Mode, Transmission/Reception Mode) .54 Single Transfer Mode (Slave Mode, Transmission Mode) .60 Single Transfer Mode (Slave Mode, Reception Mode) .65 Single Transfer Mode (Slave Mode, Transmission/Reception Mode) .71 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE 1.1 Continuous Transfer Mode (Master Mode, Transmission Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs data transmission for ten times in continuous transfer mode. Validates communication start trigger and sets communication clock to fXX/256, and transfer data length to 8 bits. [Function name] csib1_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Starts transmission after calling each setting function. [SFRs used] CB0TIC: 0x07 (Clears CSIB0 transmission enable interrupt request signal (INTCB0T), releases mask, sets to priority level 7.) CB0STR.CB0TSF Communication status flag [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable unsigned char count: [Interrupt] csib_int_send [Interrupt source] INTCB0T [File name] csib1.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: Transmit data generating variable 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib1.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 9 CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x43 (Enables CSIB0 transmission operation, sets to MSB first and fXX/256 (0.25 MHz).) continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib1.c [Caution] CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib1.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib1.c [Caution] None 10 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Interrupt function [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib1.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 11 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-1. Continuous Transfer Mode (Master Mode, Transmission Mode) (1/2) csib1_main Disables maskable interrupt request. DI count_tx = 0 Initializes transmission count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function count = 0 Initializes count for transmit data generated. count > TX_SIZE Yes Checks count for transmit data generated. No buf_tx[count] = count + 1 Substitutes value in buf_tx[]. Increments count for transmit data generated. count+ Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 Enables maskable interrupt request. EI Serial transfer start function csib_start CB0TSF = 0 No Checks communication status flag. Yes csib_end 12 Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-1. Continuous Transfer Mode (Master Mode, Transmission Mode) (2/2) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 Sets alternate function to PFCE4 = 0x00 PMC4 = 0x07 SCKB0 I/O, SOB0 output, SIB0 input CB0CTL1 = 0x06 Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). CB0CTL2 = 0x00 ret CB0CTL0 = 0x43 Sets transfer data length to 8 bits. Enables transmission operation, sets to continuous transfer mode, validates communication start trigger. Serial transfer start function ret csib_start CB0PWR = 1 Enables CSIB0 operation. CB0TX = buf_tx[0] Writes to CB0TX register. count_tx+ Increments transmission count. INTCB0T interrupt INTCB0T interrupt function csib_int_send ret count_tx < TX_SIZE No Checks transmission count. Yes Serial transfer disable function CB0TX = buf_tx[count_tx] Substitutes data in transmission register. count_tx+ Increments transmission count. csib_end CB0PWR = 0 Disables CSIB0 operation. CB0TXE = 0 Disables CSIB0 transmission operation. reti ret Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 13 CHAPTER 1 CONTINUOUS TRANSFER MODE 1.2 Continuous Transfer Mode (Master Mode, Reception Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs data reception for ten times in continuous transfer mode. Validates communication start trigger and sets communication clock to fXX/256, and transfer data length to 8 bits. [Function name] csib2_main [Argument] None [Processing content] Sets reception count (count_rx) to initial value 0. Starts reception after calling each setting function. [SFRs used] CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) CB0STR.CB0TSF Communication status flag [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [Interrupts] csib_int_receive, csib_error [Interrupt sources] INTCB0R, INTCB0RE [File name] csib2.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib2.c [Caution] None 14 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x23 (Enables CSIB0 reception operation, sets to MSB first and fXX/256 (0.25 MHz).) continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib2.c [Caution] CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and performs dummy read on receive data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0RX Receive data register [call function] None [Variable] unsigned char buf_rx[ ]: [File name] csib2.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) [call function] None [Variable] None [File name] csib2.c [Caution] Receive data storing buffer None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 15 CHAPTER 1 CONTINUOUS TRANSFER MODE Interrupt functions [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFRs used] CB0RX Receive data register CB0CTL0.CB0SCE: 0 (Invalidates communication start trigger.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib2.c [Caution] None [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib2.c [Caution] None 16 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-2. Continuous Transfer Mode (Master Mode, Reception Mode) (1/2) csib2_main DI Disables maskable interrupt request. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0REIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. Enables maskable interrupt request. EI csib_start CB0TSF = 0 Serial transfer start function No Checks communication status flag. Yes csib_end Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 17 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-2. Continuous Transfer Mode (Master Mode, Reception Mode) (2/2) Alternate-function pin setting function CSIB0 control resister setting function csib_port csib_set Sets alternate function to SCKB0 I/O, SOB0 output, SIB0 input PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 CB0CTL1 = 0x06 CB0CTL2 = 0x00 Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). Sets transfer data length to 8 bits. ret Enables reception operation, sets to CB0CTL0 = 0x23 Serial transfer start function continuous transfer mode, validates communication start trigger. ret csib_start INTCB0R interrupt CB0PWR = 1 Enables CSIB0 operation. INTCB0R interrupt function buf_rx[0] = CB0RX Performs CB0RX dummy read. csib_int_receive ret buf_rx[count_rx] = CB0RX Stores reception result to buffer. Serial transfer disable function count_rx+ csib_end Increments reception count. No count_rx >= RX_SIZE-1 CB0PWR = 0 Checks reception count. Disables CSIB0 operation. Yes CB0RXE = 0 Disables CSIB0 reception operation. CB0SCE = 0 INTCB0RE interrupt ret reti INTCB0RE interrupt function csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 Reads CB0RX register. Clears error flag. reti 18 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN Invalidates communication start trigger. CHAPTER 1 CONTINUOUS TRANSFER MODE 1.3 Continuous Transfer Mode (Master Mode, Transmission/Reception Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs transmission/reception for ten times each in continuous transfer mode. Validates communication start trigger and sets communication clock to fXX/256, and transfer data length to 8 bits. [Function name] csib3_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Sets reception count (count_rx) to initial value 0 and starts transmission/reception after calling each setting function. [SFRs used] CB0REIC: 0x07 (Enables CSIB0 reception error interrupt (INTCB0RE) servicing.) CB0RIC: 0x07 (Enables CSIB0 reception end interrupt (INTCB0R) servicing.) CB0TIC: 0x07 (Enables CSIB0 transmission enable interrupt (INTCB0T) servicing.) CB0STR.CB0TSF Communication status flag [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_tx: Transmission count variable volatile unsigned char count_rx: Reception count variable unsigned char count: Transmit data generating variable [Interrupts] csib_error, csib_int_send, csib_int_receive [Interrupt sources] INTCB0RE, INTCB0R, INTCB0T [File name] csib3.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib3.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 19 CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to fXX/256 (0.25 MHz).) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x63 (Enables CSIB0 transmission/reception operation, sets to MSB first and continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib3.c [Caution] CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib3.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission/reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib3.c [Caution] None 20 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Interrupt functions [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib3.c [Caution] None [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib3.c [Caution] None [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFR used] CB0RX [call function] None [Variables] unsigned char buf_rx[ ]: Receive data register Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib3.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 21 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-3. Continuous Transfer Mode (Master Mode, Transmission/Reception Mode) (1/3) csib3_main Disables maskable interrupt request. DI count_tx = 0 Initializes transmission count. count_rx = 0 Initializes reception count variable. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function Initializes count for transmit data generated. count = 0 count > TX_SIZE Yes Checks count for transmit data generated. No buf_tx[count] = count + 1 Substitutes value in buf_tx[]. count+ Increments count for transmit data generated. CB0REIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. EI Enables maskable interrupt request. csib_start Serial transfer start function No CB0TSF = 0 Checks communication status flag. Yes csib_end 22 Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-3. Continuous Transfer Mode (Master Mode, Transmission/Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control resister setting function csib_port csib_set PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function CB0CTL1 = 0x06 to SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL2 = 0x00 Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). Sets transfer data length to 8 bits. ret Enables transmission/reception operation, CB0CTL0 = 0x63 sets to continuous transfer mode, validates communication start trigger. ret Serial transfer start function Serial transfer disable function csib_start csib_end CB0PWR = 1 Enables CSIB0 operation. CB0PWR = 0 Disables CSIB0 operation. CB0TX = buf_tx[0] Writes to CB0TX register. CB0RXE = 0 Disables CSIB0 reception operation. CB0TXE = 0 Disables CSIB0 transmission operation. count_tx+ Increments transmission count. ret ret Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 23 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-3. Continuous Transfer Mode (Master Mode, Transmission/Reception Mode) (3/3) INTCB0RE interrupt INTCB0R interrupt INTCB0RE interrupt function INTCB0R interrupt function csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 csib_int_receive Reads CB0RX register. buf_rx[count_rx] = CB0RX count_rx+ Clears error flag. Stores reception result to buffer. Increments reception count reti reti INTCB0T interrupt INTCB0T interrupt function csib_int_send count_tx < TX_SIZE No Checks transmission count. Yes CB0TX = buf_tx[count_tx] count_tx+ Substitutes data in transmission register Increments transmission count reti 24 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE 1.4 Continuous Transfer Mode (Slave Mode, Transmission Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs transmission for ten times in continuous transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib4_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Starts transmission after calling each setting function. [SFRs used] CB0TIC: 0x07 (Clears CSIB0 transmission enable interrupt request signal (INTCB0T), releases mask, sets to priority level 7.) CB0STR.CB0TSF Communication status flag [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable unsigned char count: [Interrupt] csib_int_send [Interrupt source] INTCB0T [File name] csib4.c [Caution] None [Function name] csib_port [Processing content] Transfer data generating variable Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib4.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 25 CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and external clock.) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x43 (Enables CSIB0 transmission operation, sets to MSB first and continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib4.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib4.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib4.c [Caution] None 26 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Interrupt function [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib4.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 27 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-4. Continuous Transfer Mode (Slave Mode, Transmission Mode) (1/2) csib4_main DI Disables maskable interrupt request. count_tx = 0 Initializes transmission count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function count = 0 Initializes count for transmit data generated. Yes count > TX_SIZE Checks count for transmit data generated. No Substitutes value in buf_tx[]. buf_tx[count] = count + 1 Increments count for transmit data generated. count+ Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 EI Enables maskable interrupt request. Serial transfer start function csib_start CB0TSF = 0 No Checks communication status flag. Yes csib_end 28 Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-4. Continuous Transfer Mode (Slave Mode, Transmission Mode) (2/2) Alternate-function pin setting function CSIB0 control resister setting function csib_set csib_port PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function CB0CTL1 = 0x07 to SCKB0 I/O, SOB0 output, SIB0 input. Sets data reception timing to communication type 1 Sets communication clock to external clock Sets transfer data length to 8 bits CB0CTL2 = 0x00 ret CB0CTL0 = 0x43 Enables transmission operation, sets to continuous transfer mode, validates communication start trigger Serial transfer start function ret csib_start CB0PWR = 1 Enables CSIB0 operation. Serial transfer disable function CB0TX = buf_tx[0] Writes to CB0TX register. Increments csib_end CB0PWR = 0 Disables CSIB0 operation CB0TXE = 0 count_tx+ Disables CSIB0 transmission operation transmission count. ret INTCB0T interrupt ret INTCB0T interrupt function csib_int_send count_tx < TX_SIZE No Checks transmission count. Yes CB0TX = buf_tx[count_tx] count_tx+ Substitutes data in transmission register. Increments transmission count. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 29 CHAPTER 1 CONTINUOUS TRANSFER MODE 1.5 Continuous Transfer Mode (Slave Mode, Reception Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs reception for ten times in continuous transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib5_main [Argument] None [Processing content] Sets reception count (count_rx) to initial value 0. Starts reception after calling each setting function. [SFRs used] CB0RIC: 0x07 CB0REIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) CB0STR.CB0TSF Checks communication status flag [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [Interrupts] csib_int_receive, csib_error [Interrupt sources] INTCB0R, INTCB0RE [File name] csib5.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib5.c [Caution] None 30 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and sets communication clock to external clock.) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x23 (Enables CSIB0 reception operation, sets to MSB first and continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib5.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and performs dummy read on receive data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0RX Receive data register [call function] None [Variable] unsigned char buf_rx[ ]: [File name] csib5.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and reception operation. [SFRs used] Receive data storing buffer CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) [call function] None [Variable] None [File name] csib5.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 31 CHAPTER 1 CONTINUOUS TRANSFER MODE Interrupt functions [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFRs used] CB0RX Receive data register CB0CTL0.CB0SCE: 0 (Invalidates communication start trigger.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib5.c [Caution] None [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib5.c [Caution] None 32 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-5. Continuous Transfer Mode (Slave Mode, Reception Mode) (1/3) csib5_main DI Disables maskable interrupt request. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0RIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. CB0REIC = 0x07 EI Enables maskable interrupt request. Serial transfer start function csib_start CB0TSF = 0 No Checks communication status flag. Yes csib_end Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 33 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-5. Continuous Transfer Mode (Slave Mode, Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function to CB0CTL1 = 0x07 Sets data reception timing to communication type 1. Sets communication clock to external clock. SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL2 = 0x00 Sets transfer data length to 8 bits. ret CB0CTL0 = 0x23 Enables reception operation, sets to continuous transfer mode, validates communication start trigger. ret Serial transfer start function Serial transfer disable function csib_start csib_end CB0PWR = 1 Enables CSIB0 operation. buf_rx[0] = CB0RX Performs CB0RX dummy read. ret 34 CB0PWR = 0 Disables CSIB0 operation. CB0RXE = 0 Disables CSIB0 reception operation. ret Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-5. Continuous Transfer Mode (Slave Mode, Reception Mode) (3/3) INTCB0RE interrupt INTCB0RE interrupt function csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 Reads CB0RX register. Clears error flag. reti INTCB0R interrupt INTCB0R interrupt function csib_int_receive Stores reception result to buffer. buf_rx[count_rx] = CB0RX count_rx+ Increments reception count. No count_rx >= RX_SIZE-1 Checks reception count Yes CB0SCE = 0 Invalidates communication start trigger. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 35 CHAPTER 1 CONTINUOUS TRANSFER MODE 1.6 Continuous Transfer Mode (Slave Mode, Transmission/Reception Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs data transmission/reception for ten times each in continuous transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib6_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Sets reception count (count_rx) to initial value 0 and starts transmission/reception after calling each setting function. [SFRs used] CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal CB0TIC: 0x07 (Clears CSIB0 transmission enable interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) (INTCB0R), releases mask, sets to priority level 7.) (INTCB0T), releases mask, sets to priority level 7.) CB0STR.CB0TSF Communication status flag [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_tx: Transmission count variable volatile unsigned char count_rx: Reception count variable unsigned char count: Transfer data generating variable [Interrupts] csib_error, csib_int_send, csib_int_receive [Interrupt sources] INTCB0RE, INTCB0T, INTCB0R [File name] csib6.c [Caution] None 36 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib6.c [Caution] None [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and sets communication clock to external clock.) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x63 (Enables CSIB0 transmission and reception operation, sets to MSB first and continuous transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib6.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib6.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 37 CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission/reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib6.c [Caution] None Interrupt functions [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib6.c [Caution] None [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib6.c [Caution] None 38 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFR used] CB0RX [call function] None [Variables] unsigned char buf_rx[ ]: Receive data register Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib6.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 39 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-6. Continuous Transfer Mode (Slave Mode, Transmission/Reception Mode) (1/3) csib6_main Disables maskable interrupt request. DI count_tx = 0 Initializes transmission count. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function count = 0 count > TX_SIZE Yes Checks count for transmit data generated. No Substitutes value in buf_tx[]. buf_tx[count] = count + 1 Increments count for transmit data generated. count+ CB0REIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. EI Enables maskable interrupt request Serial transfer start function csib_start CB0TSF = 0 No Checks communication status flag. Yes csib_end 40 Serial transfer disable function. Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-6. Continuous Transfer Mode (Slave Mode, Transmission/Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function CB0CTL1 = 0x07 to SCKB0 I/O, SOB0 output, SIB0 input. Sets data reception timing to communication type 1. Sets communication clock to external clock. CB0CTL2 = 0x00 Sets transfer data length to 8 bits. CB0CTL0 = 0x63 Enables transmission/reception operation, sets to continuous transfer mode, validates communication start trigger ret ret Serial transfer start function Serial transfer disable function csib_start csib_end CB0PWR = 1 Enables CSIB0 operation. CB0PWR = 0 CB0RXE = 0 CB0TX = buf_tx[0] count_tx+ Disables CSIB0 operation. Disables CSIB0 reception operation. CB0TXE = 0 Disables CSIB0 transmission operation. Writes to CB0TX register. Increments transmission count. ret ret Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 41 CHAPTER 1 CONTINUOUS TRANSFER MODE Figure 1-6. Continuous Transfer Mode (Slave Mode, Transmission/Reception Mode) (3/3) INTCB0R interrupt INTCB0RE interrupt INTCB0R interrupt function INTCB0RE interrupt function csib_int_receive csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 Reads CB0RX register. Clears error flag. buf_rx[count_rx] = CB0RX count_rx+ reti reti INTCB0T interrupt INTCB0T interrupt function csib_int_send count_tx < TX_SIZE No Checks transmission count. Yes CB0TX = buf_tx[count_tx] count_tx+ Substitutes data in transmission register. Increments transmission count. reti 42 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN Stores reception result to buffer. Increments reception count. CHAPTER 2 SINGLE TRANSFER MODE 2.1 Single Transfer Mode (Master Mode, Transmission Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs data transmission for ten times in single transfer mode. Validates communication start trigger, and sets communication clock to fXX/256 and transfer data length to 8 bits. [Function name] csib7_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Starts transmission after calling each setting function. [SFR used] CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) [call function] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable unsigned char count: [Interrupt] csib_int_send [Interrupt source] INTCB0R [File name] csib7.c [Caution] None [Function name] csib_port [Processing content] Transfer data generating variable Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib7.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 43 CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to fXX/256 (0.25 MHz).) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x41 (Enables CSIB0 transmission operation, sets to MSB first and single transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib7.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib7.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib7.c [Caution] None 44 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Interrupt function [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib7.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 45 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-1. Single Transfer Mode (Master Mode, Transmission Mode) (1/2) csib7_main Disables maskable interrupt request. DI Initializes transmission count. count_tx = 0 csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function count = 0 count > TX_SIZE Yes Checks count for transmit data generated. No buf_tx[count] = count + 1 Substitutes value in buf_tx[]. count+ Increments count for transmit data generated. CB0RIC = 0x07 EI Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. Enables maskable interrupt request. csib_start count_tx >= TX_SIZE Serial transfer start function No Checks transmission count. Yes csib_end 46 Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-1. Single Transfer Mode (Master Mode, Transmission Mode) (2/2) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). Sets transfer data length to 8 bits. Sets alternate function to SCKB0 I/O, PMC4 = 0x07 CB0CTL1 = 0x06 CB0CTL2 = 0x00 PFC4 = 0x00 PFCE4 = 0x00 SOB0 output, SIB0 input. ret Enables transmission operation, sets single CB0CTL0 = 0x41 Serial transfer start function csib_start transfer mode, validates communication start trigger. ret CB0PWR = 1 Enables CSIB0 operation. CB0TX = buf_tx[0] Writes to CB0TX register. count_tx+ INTCB0R interrupt Increments transmission count. ret INTCB0R interrupt function csib_int_send Serial transfer disable function count_tx < TX_SIZE csib_end No Checks transmission count. Yes CB0TX = buf_tx[count_tx] CB0PWR = 0 Disables CSIB0 operation. CB0TXE = 0 Disables CSIB0 transmission operation. Substitutes data in transmission register. count_tx+ Increments transmission count. reti ret Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 47 CHAPTER 2 SINGLE TRANSFER MODE 2.2 Single Transfer Mode (Master Mode, Reception Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs data reception for ten times in single transfer mode. Validates communication start trigger and sets communication clock to fXX/256, and transfer data length to 8 bits. [Function name] csib8_main [Argument] None [Processing content] Sets reception count (count_rx) to initial value 0. Starts reception after calling each setting function. [SFRs used] CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [Interrupts] csib_int_receive, csib_error [Interrupt sources] INTCB0R, INTCB0RE [File name] csib8.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib8.c [Caution] None 48 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to fXX/256 (0.25 MHz).) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x21 (Enables CSIB0 reception operation, sets to MSB first and single transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib8.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and performs dummy read on receive data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0RX Receive data register [call function] None [Variable] unsigned char buf_rx[ ]: [File name] csib8.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and reception operation. [SFRs used] Receive data storing buffer CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) [call function] None [Variable] None [File name] csib8.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 49 CHAPTER 2 SINGLE TRANSFER MODE Interrupt functions [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFRs used] CB0RX Receive data register CB0CTL0.CB0SCE: 0 (Invalidates communication start trigger.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib8.c [Caution] None [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib8.c [Caution] None 50 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-2. Single Transfer Mode (Master Mode, Reception Mode) (1/3) csib8_main DI Disables maskable interrupt request. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0REIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. EI Enables maskable interrupt request. Serial transfer start function csib_start count_rx >= RX_SIZE No Checks reception count. Yes csib_end Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 51 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-2. Single Transfer Mode (Master Mode, Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 Sets alternate function PFCE4 = 0x00 PMC4 = 0x07 CB0CTL1 = 0x06 Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). to SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL2 = 0x00 Sets transfer data length to 8 bits. ret Enables reception operation, sets to single CB0CTL0 = 0x21 transfer mode, validates communication start trigger. Serial transfer start function ret csib_start CB0PWR = 1 Enables CSIB0 operation. INTCB0R interrupt buf_rx[0] = CB0RX Performs CB0RX dummy read. INTCB0R interrupt function ret csib_int_receive No count_rx >= RX_SIZE-1 Checks reception count. Serial transfer disable function Yes csib_end Invalidates communication CB0SCE = 0 start trigger. CB0PWR = 0 buf_rx[count_rx] = CB0RX CB0RXE = 0 Stores reception result to buffer. Disables CSIB0 reception operation. count_rx+ Increments reception count. ret reti 52 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-2. Single Transfer Mode (Master Mode, Reception Mode) (3/3) INTCB0RE interrupt INTCB0RE interrupt function csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 Reads CB0RX register. Clears error flag. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 53 CHAPTER 2 SINGLE TRANSFER MODE 2.3 Single Transfer Mode (Master Mode, Transmission/Reception Mode) [Function] Sets communication mode to master mode and transfer direction mode to MSB first, and performs transmission/reception for ten times each in single transfer mode. Validates communication start trigger and sets communication clock to fXX/256, and transfer data length to 8 bits. [Function name] csib9_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Sets reception count (count_rx) to initial value 0 and starts transmission/reception after calling each setting function. [SFRs used] CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) CB0TIC: 0x07 (Clears CSIB0 transmission enable interrupt (INTCB0T), releases mask, sets to priority level 7.) [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_tx: Transmission count variable volatile unsigned char count_rx: Reception count variable unsigned char count: Transmit data generating variable [Interrupts] csib_error, csib_int_send, csib_int_receive [Interrupt sources] INTCB0RE, INTCB0T, INTCB0R [File name] csib9.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib9.c [Caution] None 54 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN request signal CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x06 (Sets to communication type 1 and sets communication clock to fXX/256 (0.25 MHz).) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x61 (Enables CSIB0 transmission and reception operation, sets to MSB first and single transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib9.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib9.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission/reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib9.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 55 CHAPTER 2 SINGLE TRANSFER MODE Interrupt functions [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Transmit data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib9.c [Caution] None [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib9.c [Caution] None [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFR used] CB0RX [call function] None [Variables] unsigned char buf_rx[ ]: Receive data register Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib9.c [Caution] None 56 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-3. Single Transfer Mode (Master Mode, Transmission/Reception Mode) (1/3) csib9_main Disables maskable interrupt request. DI count_tx = 0 Initializes transmission count. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function Initializes count for transmit data generated. count = 0 count > TX_SIZE Yes Checks count for transmit data generated. No Substitutes value in buf_tx[]. buf_tx[count] = count + 1 Increments count for transmit data generated. count+ Clears INTCB0RE interrupt request signal, CB0REIC = 0x07 releases mask, sets to priority level 7. CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. EI Enables maskable interrupt request. Serial transfer start function csib_start count_rx >= RX_SIZE No Checks reception count. Yes csib_end Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 57 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-3. Single Transfer Mode (Master Mode, Transmission/Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register setting function csib_set csib_port PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function to SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL1 = 0x06 Sets data reception timing to communication type 1. Sets communication clock to fXX/256 (0.25 MHz). CB0CTL2 = 0x00 Sets transfer data length to 8 bits. ret Enables transmission/reception operation, CB0CTL0 = 0x61 Serial transfer start function sets to single transfer mode, validates communication start trigger. ret csib_start CB0PWR = 1 Enables CSIB0 operation. Serial transfer disable function csib_end CB0TX = buf_tx[0] Writes to CB0TX register. Disables CSIB0 operation. Disables CSIB0 reception operation. CB0TXE = 0 Increments transmission count. CB0PWR = 0 CB0RXE = 0 count_tx+ Disables CSIB0 transmission operation. ret ret 58 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-3. Single Transfer Mode (Master Mode, Transmission/Reception Mode) (3/3) INTCB0RE interrupt INTCB0R interrupt INTCB0RE interrupt function INTCB0R interrupt function csib_error csib_int_receive buf_rx[count_rx] = CB0RX Reads CB0RX register. CB0OVE = 0 Clears error flag. buf_rx[count_rx] = CB0RX count_rx+ Stores reception result to buffer. Increments reception count. reti reti INTCB0R interrupt INTCB0R interrupt function csib_int_send count_tx < TX_SIZE No Checks transmission count. Yes CB0TX = buf_tx[count_tx] count_tx+ Substitutes data in transmission register. Increments transmission count. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 59 CHAPTER 2 SINGLE TRANSFER MODE 2.4 Single Transfer Mode (Slave Mode, Transmission Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs transmission for ten times in single transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib10_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Starts transmission after calling each setting function. [SFR used] CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable unsigned char count: Transfer data generating variable [Interrupt] csib_int_send [Interrupt source] INTCB0R [File name] csib10.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib10.c [Caution] None 60 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and external clock.) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x41 (Enables CSIB0 transmission operation, sets to MSB first and single transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib10.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and writes a value to transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib10.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib10.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 61 CHAPTER 2 SINGLE TRANSFER MODE Interrupt function [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib10.c [Caution] None 62 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-4. Single Transfer Mode (Slave Mode, Transmission Mode) (1/2) csib10_main DI Disables maskable interrupt request. count_tx = 0 Initializes transmission count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function count = 0 Initializes count for transmit data generated. count > TX_SIZE Yes Checks count for transmit data generated. No buf_tx[count] = count + 1 Substitutes value in buf_tx[]. count+ Increments count for transmit data generated. CB0RIC = 0x07 EI Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. Enables maskable interrupt request. csib_start count_tx >= TX_SIZE Serial transfer start function No Checks transmission count. Yes csib_end Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 63 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-4. Single Transfer Mode (Slave Mode, Transmission Mode) (2/2) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 PFCE4 = 0x00 PMC4 = 0x07 Sets alternate function to CB0CTL1 = 0x07 SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL2 = 0x00 Sets data reception timing to communication type 1. Sets communication clock to external clock. Sets transfer data length to 8 bits. ret CB0CTL0 = 0x41 Serial transfer start function Enables transmission operation, sets to single transfer mode, validates communication start trigger. ret csib_start INTCB0R interrupt CB0PWR = 1 CB0TX = buf_tx[0] Enables CSIB0 operation. Writes to CB0TX register. INTCB0R interrupt function csib_int_send count_tx+ Increments transmission count. count_tx < TX_SIZE ret No Yes CB0TX = buf_tx[count_tx] Serial transfer disable function csib_end count_tx+ CB0PWR = 0 Disables CSIB0 operation. CB0TXE = 0 Disables CSIB0 transmission operation. reti ret 64 Checks transmission count. Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN Substitutes data in transmission register. Increments transmission count. CHAPTER 2 SINGLE TRANSFER MODE 2.5 Single Transfer Mode (Slave Mode, Reception Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs reception for ten times in single transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib11_main [Argument] None [Processing content] Sets reception count (count_rx) to initial value 0. Starts reception after calling each setting function. [SFRs used] CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), releases mask, sets to priority level 7.) CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [Interrupts] csib_int_receive, csib_error [Interrupt sources] INTCB0R, INTCB0RE [File name] csib11.c [Caution] None [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output, and SIB0 input.) [call function] None [Variable] None [File name] csib11.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 65 CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and sets communication clock to CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x21 (Enables CSIB0 reception operation, sets to MSB first and single external clock.) transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib11.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables CSIB0 operation and performs dummy read on receive data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0RX Receive data register [call function] None [Variable] unsigned char buf_rx[ ]: [File name] csib11.c [Caution] None [Function name] csib_end [Processing content] Disables CSIB0 operation and reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) [call function] None [Variable] None [File name] csib11.c [Caution] Receive data storing buffer None 66 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Interrupt functions [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFRs used] CB0RX Receive data register CB0CTL0.CB0SCE: 0 (Invalidates communication start trigger.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib11.c [Caution] None [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib11.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 67 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-5. Single Transfer Mode (Slave Mode, Reception Mode) (1/3) csib11_main DI Disables maskable interrupt request. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function CB0RIC = 0x07 CB0REIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. Enables maskable interrupt request. EI Serial transfer start function csib_start count_rx >= RX_SIZE No Yes csib_end 68 Serial transfer disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-5. Single Transfer Mode (Slave Mode, Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register csib_port csib_set setting function Sets alternate function to PMC4 = 0x07 SCKB0 I/O, SOB0 output, SIB0 input. CB0CTL1 = 0x07 Sets data reception timing to communication type 1. Sets communication clock to external clock. CB0CTL2 = 0x00 PFC4 = 0x00 PFCE4 = 0x00 Sets transfer data length to 8 bits. ret Enables reception operation, sets to single CB0CTL0 = 0x21 Serial transfer start function csib_start transfer mode, validates communication start trigger. ret CB0PWR = 1 buf_rx[0] = CB0RX Performs CB0RX dummy read. INTCB0R interrupt Enables CSIB0 operation. INTCB0R interrupt function ret csib_int_receive count_rx >= RX_SIZE-1 No Checks reception count. Yes Serial transfer disable Invalidates communication start trigger. CB0SCE = 0 function csib_end CB0PWR = 0 CB0RXE = 0 ret buf_rx[count_rx] = CB0RX Disables CSIB0 reception operation. count_rx+ Stores reception result to buffer. Increments reception count. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 69 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-5. Single Transfer Mode (Slave Mode, Reception Mode) (3/3) INTCB0RE interrupt INTCB0RE interrupt function csib_error buf_rx[count_rx] = CB0RX CB0OVE = 0 Reads CR0RX register. Clears error flag. reti 70 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE 2.6 Single Transfer Mode (Slave Mode, Transmission/Reception Mode) [Function] Sets communication mode to slave mode and transfer direction mode to MSB first, and performs data transmission/reception for ten times each in single transfer mode. Validates communication start trigger and sets communication clock to external clock, and transfer data length to 8 bits. [Function name] csib12_main [Argument] None [Processing content] Sets transmission count (count_tx) to initial value 0. Sets reception count (count_rx) to initial value 0 and starts transmission/reception after calling each setting function. [SFRs used] CB0REIC: 0x07 (Clears CSIB0 reception error interrupt request signal (INTCB0RE), releases mask, sets to priority level 7.) CB0RIC: 0x07 (Clears CSIB0 reception end interrupt request signal (INTCB0R), CB0TIC: 0x07 (Clears releases mask, sets to priority level 7.) CSIB0 transmission enable interrupt request signal (INTCB0T), releases mask, sets to priority level 7.) [call functions] csib_port, csib_set, csib_start, csib_end [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_tx: Transmission count variable volatile unsigned char count_rx: Reception count variable unsigned char count: Transfer data generating variable [Interrupts] csib_error, csib_int_send, csib_int_receive [Interrupt sources] INTCB0RE, INTCB0T, INTCB0R [File name] csib12.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 71 CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_port [Processing content] Sets port 4 as CSIB0 I/O pin. [SFRs used] PFC4: 0x00 (Sets SCKB0 I/O, SOB0 output and SIB0 input.) PFCE4: 0x00 (Sets SCKB0 I/O, SOB0 output and SIB0 input.) PMC4: 0x07 (Sets SCKB0 I/O, SOB0 output and SIB0 input.) [call function] None [Variable] None [File name] csib12.c [Caution] None [Function name] csib_set [Processing content] Sets CSIB0 control register. [SFRs used] CB0CTL1: 0x07 (Sets to communication type 1 and external clock.) CB0CTL2: 0x00 (Sets transfer data length to 8 bits.) CB0CTL0: 0x61 (Enables CSIB0 transmission and reception operation, sets to MSB first and single transfer mode, and validates communication start trigger.) [call function] None [Variable] None [File name] csib12.c [Caution] The CB0TXE, CB0RXE, CB0DIR, and CB0TMS bits of the CB0CTL0 register are rewritable only when the CB0PWR bit is 0. However, the CB0PWR bit can be set to 1 simultaneously. [Function name] csib_start [Processing content] Enables the CSIB0 operation and writes a value to the transmit data register. [SFRs used] CB0CTL0.CB0PWR: 1 (Enables CSIB0 operation.) CB0TX Transmit data register [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib12.c [Caution] None 72 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_end [Processing content] Disables CSIB0 operation and transmission/reception operation. [SFRs used] CB0CTL0.CB0PWR: 0 (Disables CSIB0 operation.) CB0CTL0.CB0RXE: 0 (Disables CSIB0 reception operation.) CB0CTL0.CB0TXE: 0 (Disables CSIB0 transmission operation.) [call function] None [Variable] None [File name] csib12.c [Caution] None Interrupt functions [Function name] csib_error [Servicing content] Clears reception error flag. [SFRs used] CB0RX Receive data register CB0STR.CB0OVE: 0 (Clears overrun error flag.) [call function] None [Variables] unsigned char buf_rx[ ]: Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib12.c [Caution] None [Function name] csib_int_send [Servicing content] Sets new data for transmitting next data. [SFR used] CB0TX [call function] None [Variables] unsigned char buf_tx[ ]: Transmit data register Transmit data storing buffer volatile unsigned char count_tx: Transmission count variable [File name] csib12.c [Caution] None Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 73 CHAPTER 2 SINGLE TRANSFER MODE [Function name] csib_int_receive [Servicing content] Stores receive data to buffer. [SFR used] CB0RX [call function] None [Variables] unsigned char buf_rx[ ]: Receive data register Receive data storing buffer volatile unsigned char count_rx: Reception count variable [File name] csib12.c [Caution] None 74 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-6. Single Transfer Mode (Slave Mode, Transmission/Reception Mode) (1/3) csib12_main Disables maskable interrupt request. DI count_tx = 0 Initializes transmission count. count_rx = 0 Initializes reception count. csib_port Alternate-function pin setting function csib_set CSIB0 control register setting function Initializes count for transmit data generated. count = 0 count > TX_SIZSE Yes Checks count for transmit data generated. No Substitutes value in buf_tx[]. buf_tx[count] = count + 1 Increments count for transmit data generated. count+ CB0REIC = 0x07 Clears INTCB0RE interrupt request signal, releases mask, sets to priority level 7. CB0RIC = 0x07 Clears INTCB0R interrupt request signal, releases mask, sets to priority level 7. CB0TIC = 0x07 Clears INTCB0T interrupt request signal, releases mask, sets to priority level 7. EI Enables maskable interrupt request. Serial transfer start function csib_start count_rx >= RX_SIZE No Checks reception count. Yes csib_end Serial transfer operation disable function Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 75 CHAPTER 2 SINGLE TRANSFER MODE Figure 2-6. Single Transfer Mode (Slave Mode, Transmission/Reception Mode) (2/3) Alternate-function pin setting function CSIB0 control register setting function csib_port csib_set PFC4 = 0x00 Sets alternate function to PFCE4 = 0x00 SCKB0 I/O, SOB0 output, PMC4 = 0x07 SIB0 input. CB0CTL1 = 0x07 Sets data reception timing to communication type 1. Sets communication clock to external clock. CB0CTL2 = 0x00 Sets transfer data length to 8 bits. ret Enables transmission/reception operation, sets CB0CTL0 = 0x61 Serial transfer start function to single transfer mode, validates communication start trigger. csib_start ret CB0PWR = 1 Enables CSIB0 operation. Serial transfer disable function CB0TX = buf_tx[0] Writes to CB0TX register. csib_end ret Disables CSIB0 operation. CB0RXE = 0 Increments transmission count. CB0PWR = 0 Disables CSIB0 reception operation. CB0TXE = 0 count_tx+ Disables CSIB0 transmission operation. ret 76 Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN CHAPTER 2 SINGLE TRANSFER MODE Figure 2-6. Single Transfer Mode (Slave Mode, Transmission/Reception Mode) (3/3) INTCB0R interrupt INTCB0RE interrupt INTCB0RE interrupt function INTCB0R interrupt function csib_error csib_int_receive buf_rx[count_rx] = CB0RX Reads CB0RX register. buf_rx[count_rx] = CB0RX Clears error flag. CB0OVE = 0 count_rx+ Stores reception result to buffer. Increments reception count. reti reti INTCB0R interrupt INTCB0R interrupt function csib_int_send count_tx < TX_SIZE No Checks transmission count. Yes CB0TX = buf_tx[count_tx] Substitutes data in transmission register. count_tx+ Increments transmission count. reti Preliminary Application Note U18725EJ1V0AN U18725EJ1V0AN 77 For further information, please contact: NEC Electronics Corporation 1753, Shimonumabe, Nakahara-ku, Kawasaki, Kanagawa 211-8668, Japan Tel: 044-435-5111 http://www.necel.com/ [America] [Europe] [Asia & Oceania] NEC Electronics America, Inc. 2880 Scott Blvd. Santa Clara, CA 95050-2554, U.S.A. Tel: 408-588-6000 800-366-9782 http://www.am.necel.com/ NEC Electronics (Europe) GmbH Arcadiastrasse 10 40472 Düsseldorf, Germany Tel: 0211-65030 http://www.eu.necel.com/ NEC Electronics (China) Co., Ltd 7th Floor, Quantum Plaza, No. 27 ZhiChunLu Haidian District, Beijing 100083, P.R.China Tel: 010-8235-1155 http://www.cn.necel.com/ Hanover Office Podbielskistrasse 166 B 30177 Hannover Tel: 0 511 33 40 2-0 Munich Office Werner-Eckert-Strasse 9 81829 München Tel: 0 89 92 10 03-0 Stuttgart Office Industriestrasse 3 70565 Stuttgart Tel: 0 711 99 01 0-0 United Kingdom Branch Cygnus House, Sunrise Parkway Linford Wood, Milton Keynes MK14 6NP, U.K. Tel: 01908-691-133 Succursale Française 9, rue Paul Dautier, B.P. 52 78142 Velizy-Villacoublay Cédex France Tel: 01-3067-5800 Sucursal en España Juan Esplandiu, 15 28007 Madrid, Spain Tel: 091-504-2787 Tyskland Filial Täby Centrum Entrance S (7th floor) 18322 Täby, Sweden Tel: 08 638 72 00 Filiale Italiana Via Fabio Filzi, 25/A 20124 Milano, Italy Tel: 02-667541 Shanghai Branch Room 2509-2510, Bank of China Tower, 200 Yincheng Road Central, Pudong New Area, Shanghai, P.R.China P.C:200120 Tel:021-5888-5400 http://www.cn.necel.com/ Shenzhen Branch Unit 01, 39/F, Excellence Times Square Building, No. 4068 Yi Tian Road, Futian District, Shenzhen, P.R.China P.C:518048 Tel:0755-8282-9800 http://www.cn.necel.com/ NEC Electronics Hong Kong Ltd. Unit 1601-1613, 16/F., Tower 2, Grand Century Place, 193 Prince Edward Road West, Mongkok, Kowloon, Hong Kong Tel: 2886-9318 http://www.hk.necel.com/ NEC Electronics Taiwan Ltd. 7F, No. 363 Fu Shing North Road Taipei, Taiwan, R. O. C. Tel: 02-8175-9600 http://www.tw.necel.com/ NEC Electronics Singapore Pte. Ltd. 238A Thomson Road, #12-08 Novena Square, Singapore 307684 Tel: 6253-8311 http://www.sg.necel.com/ NEC Electronics Korea Ltd. 11F., Samik Lavied'or Bldg., 720-2, Yeoksam-Dong, Kangnam-Ku, Seoul, 135-080, Korea Tel: 02-558-3737 http://www.kr.necel.com/ Branch The Netherlands Steijgerweg 6 5616 HS Eindhoven The Netherlands Tel: 040 265 40 10 G0706 G0706