Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x393
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
x393
Commits
60ed0ab9
Commit
60ed0ab9
authored
Apr 03, 2018
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
generator script
parent
015d731b
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
131 additions
and
0 deletions
+131
-0
mt9f002_window_generator.py
py393/mt9f002_window_generator.py
+131
-0
No files found.
py393/mt9f002_window_generator.py
0 → 100644
View file @
60ed0ab9
#!/usr/bin/env python
'''
Generates window settings for driverless mode
For:
* mt9f002
* disabled sensor driver
* vact_delay=2, compressor_margin=0
Instructions:
* disable sensor driver (to enable back, remove 'disable_driver' file):
root@elphel393~# touch /etc/elphel393/disable_driver
reboot
* run python
root@elphel393~# cd /usr/local/verilog/; test_mcntrl.py @hargs-after
* from test_mcntrl.py session run
** enable sensor, remove reset, adjust cable phases
setup_all_sensors True None 0x1 False 4384 3280
write_sensor_i2c 0 1 0 0x31c08000 # hispi timing
write_sensor_i2c 0 1 0 0x030600b4 # pll multiplier
write_sensor_i2c 0 1 0 0x31c68400 # hispi control status
write_sensor_i2c 0 1 0 0x306e9280 # datapath select
write_sensor_i2c 0 1 0 0x301a001c # reset and start streaming
hispi_phases_adjust 0
write_sensor_i2c 0 1 0 0x301a001c # reset and start streaming
setup_all_sensors True None 0x1 False 4384 3280
compressor_control all None None None None None 2
program_gamma all 0 0.57 0.04
write_sensor_i2c 0 1 0 0x3028000a # global gain
write_sensor_i2c 0 1 0 0x302c000d # some gain
write_sensor_i2c 0 1 0 0x302e0010 # some gain
write_sensor_i2c 0 1 0 0x30120080 # coarse exposure
jpeg_acquire_write
#write_sensor_i2c 0 1 0 0x301a0018 # put to stanby
** run this script and copy paste its output
'''
__copyright__
=
"Copyright 2018, Elphel, Inc."
__license__
=
"GPL-3.0+"
__maintainer__
=
"Oleg Dzhimiev"
__email__
=
"oleg@elphel.com"
import
sys
try
:
w
=
int
(
sys
.
argv
[
1
])
except
IndexError
:
w
=
4384
try
:
h
=
int
(
sys
.
argv
[
2
])
except
IndexError
:
h
=
3280
# 16x
w
=
(
w
>>
4
)
*
16
h
=
(
h
>>
4
)
*
16
# Some regs
P_REG_MT9F002_X_ADDR_START
=
0x3004
P_REG_MT9F002_X_ADDR_END
=
0x3008
P_REG_MT9F002_SMIA_X_OUTPUT_SIZE
=
0x034c
P_REG_MT9F002_LINE_LENGTH_PCK
=
0x300c
P_REG_MT9F002_Y_ADDR_START
=
0x3002
P_REG_MT9F002_Y_ADDR_END
=
0x3006
P_REG_MT9F002_SMIA_Y_OUTPUT_SIZE
=
0x034e
P_REG_MT9F002_FRAME_LENGTH_LINES
=
0x300a
# Some constants
compressor_margin
=
0
vact_delay
=
2
extra_height
=
40
x_start
=
144
y_start
=
32
-
vact_delay
min_frame_blanking_lines
=
0x092
min_line_blanking_pck
=
0x138
min_line_length_pck
=
0x4c8
#min_line_length_pck = 0x930
# Calculations
x_output_size
=
w
y_output_size
=
h
+
extra_height
x_start
=
x_start
-
compressor_margin
x_end
=
x_start
+
x_output_size
-
1
+
compressor_margin
y_start
=
y_start
-
compressor_margin
y_end
=
y_start
+
y_output_size
-
1
+
compressor_margin
frame_length_lines
=
y_output_size
+
min_frame_blanking_lines
llp0
=
min_line_length_pck
llp1
=
x_output_size
/
2
+
min_line_blanking_pck
/
2
llp2
=
x_output_size
/
2
+
0x5e
line_length_pck
=
max
(
llp0
,
llp1
,
llp2
)
def
printline
(
reg
,
val
,
comment
=
""
):
print
(
"write_sensor_i2c 0 1 0 0x"
+
"{:04x}"
.
format
(
reg
)
+
"{:04x}"
.
format
(
val
)
+
" # "
+
comment
)
printline
(
P_REG_MT9F002_Y_ADDR_START
,
y_start
,
"y_addr_start"
)
printline
(
P_REG_MT9F002_Y_ADDR_END
,
y_end
,
"y_addr_end"
)
printline
(
P_REG_MT9F002_SMIA_Y_OUTPUT_SIZE
,
y_output_size
,
"y_output_size"
)
printline
(
P_REG_MT9F002_FRAME_LENGTH_LINES
,
frame_length_lines
,
"frame_length_lines"
)
printline
(
P_REG_MT9F002_X_ADDR_START
,
x_start
,
"x_addr_start"
)
printline
(
P_REG_MT9F002_X_ADDR_END
,
x_end
,
"x_addr_end"
)
printline
(
P_REG_MT9F002_SMIA_X_OUTPUT_SIZE
,
x_output_size
,
"x_output_size"
)
printline
(
P_REG_MT9F002_LINE_LENGTH_PCK
,
line_length_pck
,
"line_length_pck"
)
print
(
"write_sensor_i2c 0 1 0 0x301a001c # reset and start streaming"
)
print
(
"# wait"
)
print
(
"write_sensor_i2c 0 1 0 0x301a0018 # standby"
)
print
(
"setup_all_sensors True None 0x1 False "
+
str
(
w
)
+
" "
+
str
(
h
))
print
(
"compressor_control all None None None None None 2"
)
print
(
"jpeg_acquire_write"
)
\ No newline at end of file
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