Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zephyr Firmware
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kestrel Collaboration
Kestrel Firmware
Zephyr Firmware
Commits
710ca8a7
Commit
710ca8a7
authored
Jan 06, 2023
by
Raptor Engineering Development Team
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add word register read/write commands to I2C driver
parent
e0c0b48b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
48 additions
and
3 deletions
+48
-3
kestrel/src/opencores_i2c.c
kestrel/src/opencores_i2c.c
+45
-2
kestrel/src/opencores_i2c.h
kestrel/src/opencores_i2c.h
+3
-1
No files found.
kestrel/src/opencores_i2c.c
View file @
710ca8a7
// © 2020 - 202
2
Raptor Engineering, LLC
// © 2020 - 202
3
Raptor Engineering, LLC
//
// Released under the terms of the LGPL v3+
// See the LICENSE file for full details
...
...
@@ -257,6 +257,32 @@ uint8_t i2c_read_register_byte(uint8_t *base_address, uint8_t slave_address, uin
return
retval
;
}
uint16_t
i2c_read_register_word
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
int
*
error
)
{
uint16_t
retval
=
0xffff
;
uint8_t
byte
[
2
];
if
(
error
)
{
*
error
=
-
1
;
}
if
(
!
write_i2c_data
(
base_address
,
slave_address
,
&
slave_register
,
1
,
0
))
{
if
(
!
read_i2c_data
(
base_address
,
slave_address
,
&
byte
,
NULL
,
2
,
1
))
{
retval
=
byte
[
0
]
<<
8
;
retval
|=
byte
[
1
];
if
(
error
)
{
*
error
=
0
;
}
}
}
return
retval
;
}
int
i2c_write_register_byte
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
uint8_t
data
)
{
uint8_t
tx_data
[
2
];
...
...
@@ -271,4 +297,21 @@ int i2c_write_register_byte(uint8_t *base_address, uint8_t slave_address, uint8_
}
return
1
;
}
\ No newline at end of file
}
int
i2c_write_register_word
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
uint16_t
data
)
{
uint8_t
tx_data
[
3
];
// Assemble TX data structure
tx_data
[
0
]
=
slave_register
;
tx_data
[
1
]
=
(
data
>>
16
)
&
0xff
;
tx_data
[
2
]
=
data
&
0xff
;
if
(
!
write_i2c_data
(
base_address
,
slave_address
,
tx_data
,
3
,
1
))
{
return
0
;
}
return
1
;
}
kestrel/src/opencores_i2c.h
View file @
710ca8a7
// © 2020 - 202
2
Raptor Engineering, LLC
// © 2020 - 202
3
Raptor Engineering, LLC
//
// Released under the terms of the LGPL v3+
// See the LICENSE file for full details
...
...
@@ -70,6 +70,8 @@ int initialize_i2c_master(uint8_t *base_address, int i2c_bus_frequency);
int
write_i2c_data
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
*
data
,
int
data_length
,
uint8_t
send_stop_signal
);
int
read_i2c_data
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
*
data
,
int
*
data_length
,
int
max_data_length
,
uint8_t
send_stop_signal
);
uint8_t
i2c_read_register_byte
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
int
*
error
);
uint16_t
i2c_read_register_word
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
int
*
error
);
int
i2c_write_register_byte
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
uint8_t
data
);
int
i2c_write_register_word
(
uint8_t
*
base_address
,
uint8_t
slave_address
,
uint8_t
slave_register
,
uint16_t
data
);
#endif // _OPENCORES_I2C_H
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment