Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC ADC 100M 14b 4cha - Testing
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
FMC ADC 100M 14b 4cha - Testing
Commits
2b03e0b1
Commit
2b03e0b1
authored
May 13, 2014
by
Matthieu Cattin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
struct: Take back cp210x_eeprom.py as it is board dependent (e.g. not the same for fmc-tdc).
parent
4a8e6283
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
86 additions
and
0 deletions
+86
-0
cp210x_eeprom.py
tests/cp210x_eeprom.py
+86
-0
No files found.
tests/cp210x_eeprom.py
0 → 100644
View file @
2b03e0b1
#! /usr/bin/env python
# coding: utf8
# Copyright CERN, 2011
# Author: Matthieu Cattin <matthieu.cattin@cern.ch>
# Licence: GPL v2 or later.
# Website: http://www.ohwr.org
import
sys
import
rr
import
time
import
os
import
re
from
ctypes
import
*
from
ptsexcept
import
*
from
cp210x
import
usb
,
valuefile
,
cp210x
from
cp210x.eeprom
import
EEPROM
"""
cp210x_eeprom: Access to USB-UART bridge CP2103 EEPROM
Note: The EEPROM is used to store calibration data (reference voltage output for
the three ranges). The data are stores as a string in the "Product String".
Format: "4.09551500 0.40967800 0.04096060"
"""
CALIBR_RANGES
=
[
'10V'
,
'1V'
,
'100mV'
]
class
CP210xEepromOperationError
(
Exception
):
def
__init__
(
self
,
msg
):
self
.
msg
=
msg
def
__str__
(
self
):
return
(
"CP210x EEPROM:
%
s"
%
(
self
.
msg
))
class
CCP210x_Eeprom
:
def
__init__
(
self
,
vid
,
pid
):
usb
.
init
()
usb_patterns
=
[]
vid
=
int
(
vid
,
16
)
pid
=
int
(
pid
,
16
)
usb_patterns
.
append
(
dict
(
idVendor
=
vid
,
idProduct
=
pid
))
self
.
dev
=
[
item
for
item
in
cp210x
.
Cp210xProgrammer
.
list_devices
(
usb_patterns
)]
self
.
dev
=
self
.
dev
[
0
]
def
get_calibr_data
(
self
):
self
.
dev
.
open
()
try
:
eeprom
=
EEPROM
(
self
.
dev
)
except
:
raise
CP210xEepromOperationError
(
'Cannot open device.'
)
finally
:
self
.
dev
.
close
()
eeprom_value
=
eeprom
.
get_values
()
product_string
=
eeprom_value
[
'product_string'
]
#print "Product string: \"%s\"" % product_string
calibr_string_list
=
product_string
.
split
(
' '
)
if
len
(
calibr_string_list
)
!=
3
:
raise
CP210xEepromOperationError
(
'Product string has the wrong format.'
)
calibr_data
=
{}
for
i
in
range
(
len
(
calibr_string_list
)):
pattern
=
r'\b[0-9]\.[0-9]{8}\b'
if
re
.
search
(
pattern
,
calibr_string_list
[
i
]):
calibr_data
[
CALIBR_RANGES
[
i
]]
=
calibr_string_list
[
i
]
else
:
raise
CP210xEepromOperationError
(
'Product string has the wrong format.'
)
return
calibr_data
def
set_calibr_data
(
self
,
data
):
self
.
dev
.
open
()
product_string
=
data
[
CALIBR_RANGES
[
0
]]
+
' '
+
data
[
CALIBR_RANGES
[
1
]]
+
' '
+
data
[
CALIBR_RANGES
[
2
]]
#print "New product string value: \"%s\"" % product_string
try
:
self
.
dev
.
set_product_string
(
product_string
)
print
"Calibration data written to cp210x EEPROM."
finally
:
self
.
dev
.
close
()
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