Freelance Electronics Components Distributor
Closed Dec 25th-26th
800-300-1968
We Stock Hard to Find Parts

C8051F041-GQ

Part # C8051F041-GQ
Description MCU 8BIT CISC 64KB FLASH 3V 64TQFP - Trays
Category IC
Availability In Stock
Qty 2
Qty Price
1 + $20.05559
Manufacturer Available Qty
SILICON LABORATORIES
Date Code: 0903
  • Shipping Freelance Stock: 2
    Ships Immediately



Technical Document


DISCLAIMER: The information provided herein is solely for informational purposes. Customers must be aware of the suitability of this product for their application, and consider that variable factors such as Manufacturer, Product Category, Date Codes, Pictures and Descriptions may differ from available inventory.

C8051F040/1/2/3/4/5/6/7
232 Rev. 1.5
18.2.3. Message Handler Registers
The Message Handler Registers are read only registers. Their flags can be read via the indexed access
method with CAN0ADR, CAN0DATH, and CAN0DATL. The message handler registers provide interrupt,
error, transmit/receive requests, and new data information.
Please refer to the Bosch CAN User’s Guide for information on the function and use of the Message Han-
dler Registers.
18.2.4. CIP-51 MCU Special Function Registers
C8051F04x family peripherals are modified, monitored, and controlled using Special Function Registers
(SFR’s). Only three of the CAN Controller’s registers may be accessed directly with SFR’s. However, all
CAN Controller registers can be accessed indirectly using three CIP-51 MCU SFR’s: the CAN Data Regis-
ters (CAN0DATH and CAN0DATL) and CAN Address Register (CAN0ADR).
18.2.5. Using CAN0ADR, CAN0DATH, and CANDATL to Access CAN Registers
Each CAN Controller Register has an index number (see Table 18.2). The CAN register address space is
128 words (256 bytes). A CAN register is accessed via the CAN Data Registers (CAN0DATH and
CAN0DATL) when a CAN register’s index number is placed into the CAN Address Register (CAN0ADR).
For example, if the Bit Timing Register is to be configured with a new value, CAN0ADR is loaded with
0x03. The low byte of the desired value is accessed using CAN0DATL and the high byte of the bit timing
register is accessed using CAN0DATH. CAN0DATL is bit addressable for convenience. To load the value
0x2304 into the Bit Timing Register:
CAN0ADR = 0x03; // Load Bit Timing Register’s index (Table 18.1)
CAN0DATH = 0x23; // Move the upper byte into data reg high byte
CAN0DATL = 0x04; // Move the lower byte into data reg low byte
Note: CAN0CN, CAN0STA, and CAN0TST may be accessed either by using the index method, or by direct
access with the CIP-51 MCU SFR’s. CAN0CN is located at SFR location 0xF8/SFR page 1 (SFR Definition
18.3), CAN0TST at 0xDB/SFR page 1 (SFR Definition 18.4), and CAN0STA at 0xC0/SFR page 1 (SFR
Definition 18.5).
18.2.6. CAN0ADR Autoincrement Feature
For ease of programming message objects, CAN0ADR features autoincrementing for the index ranges
0x08 to 0x12 (Interface Registers 1) and 0x20 to 0x2A (Interface Registers 2). When the CAN0ADR regis-
ter has an index in these ranges, the CAN0ADR will autoincrement by 1 to point to the next CAN reg-
ister 16-bit word upon a read/write of CAN0DATL
. This speeds programming of the frequently-
accessed interface registers when configuring message objects.
NOTE:
Table 18.2 below supersedes Figure 5 in Section 3, “Programmer’s Model” of the Bosch CAN
User’s Guide.
C8051F040/1/2/3/4/5/6/7
Rev. 1.5 233
Table 18.2. CAN Register Index and Reset Values
CAN Register
Index
Register Name
Reset
Va
lue
Notes
0x00 CAN Control Register 0x0001 Accessible in CIP-51 SFR Map
0x01 Status Register 0x0000 Accessible in CIP-51 SFR Map
0x02 Error Register 0x0000 Read Only
0x03 Bit Timing Register 0x2301 Write Enabled by CCE Bit in CAN0CN
0x04 Interrupt Register 0x0000 Read Only
0x05 Test Register 0x0000 Bit 7 (RX) is determined by CAN bus
0x06 BRP Extension Register 0x0000 Write Enabled by TEST bit in CAN0CN
0x08 IF1 Command Request 0x0001
CAN0ADR autoincrements in IF1 index space
(
0x08 - 0x12) upon write to CAN0DATL
0x09 IF1 Command Mask 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0A IF1 Mask 1 0xFFFF
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0B IF1 Mask 2 0xFFFF
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0C IF1 Arbitration 1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0D IF1 Arbitration 2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0E IF1 Message Control 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x0F IF1 Data A1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x10 IF1 Data A2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x11 IF1 Data B1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x12 IF1 Data B2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x20 IF2 Command Request 0x0001
CAN0ADR autoincrements in IF2 index space
(0x20 - 0x2A)
upon write to CAN0DATL
0x21 IF2 Command Mask 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x22 IF2 Mask 1 0xFFFF
CAN0ADR autoincrement
upon write to
CAN0DATL
0x23 IF2 Mask 2 0xFFFF
CAN0ADR autoincrement
upon write to
CAN0DATL
0x24 IF2 Arbitration 1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x25 IF2 Arbitration 2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
C8051F040/1/2/3/4/5/6/7
234 Rev. 1.5
0x26 IF2 Message Control 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x27 IF2 Data A1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x28 IF2 Data A2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x29 IF2 Data B1 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x2A IF2 Data B2 0x0000
CAN0ADR autoincrement
upon write to
CAN0DATL
0x40 Transmission Request 1 0x0000
Transmission request flags for message objects
(
read only)
0x41 Transmission Request 2 0x0000
Transmission request flags for message objects
(
read only)
0x48 New Data 1 0x0000 New Data flags for message objects (read only)
0x49 New Data 2 0x0000 New Data flags for message objects (read only)
0x50 Interrupt Pending 1 0x0000
Interrupt pending flags for message objects
(
read only)
0x51 Interrupt Pending 2 0x0000
Interrupt pending flags for message objects
(
read only)
0x58 Message Valid 1 0x0000
Message valid flags for message objects (read
on
ly)
0x59 Message Valid 2 0x0000
Message valid flags for message objects (read
on
ly)
Table 18.2. CAN Register Index and Reset Values (Continued)
CAN Register
Index
Register Name
Reset
Value
Notes
Figure 18.4. CAN0DATH: CAN Data Access Register High Byte
Bit7-0: CAN0DATH: CAN Data Access Register High Byte.
The CAN0DAT Registers are used to read/write register values and data to and from the
CAN Registers pointed to with the index number in the CAN0ADR Register.
The CAN0ADR Register is used to point the [CAN0DATH:CAN0DATL] to a desired CAN
Register. The desired CAN Register’s index number is moved into CAN0ADR. The
CAN0DAT Register can then read/write to and from the CAN Register.
R/W R/W R/W R/W R/W R/W R/W R/W Reset Value
00000000
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
SFR Address:
SFR Page:
0xD9
1
PREVIOUS7172737475767778798081828384NEXT