Mike Smith
2012-02-20 07:37:07 UTC
I'm trying to get a handle on an issue I'm seeing where, on an STM32F4 configured:
CONFIG_I2C=y
CONFIG_I2C_POLLED=n
CONFIG_I2C_TRANSFER=y
CONFIG_I2C_TRACE=y
CONFIG_DEBUG_I2C=y
CONFIG_I2CTOOL_BUILTIN=y
A simple I2C register read:
nsh> i2c get -r 0a
stm32_i2c_process: Timed out: CR1: 0001 status: 00030000
0. STATUS: 00030001 COUNT: 1 EVENT: 6 PARM: 00000000
1. STATUS: 00070082 COUNT: 2 EVENT: 7 PARM: 00000000
2. STATUS: 00070084 COUNT: 3 EVENT: 8 PARM: 00000001
3. STATUS: 00030001 COUNT: 4 EVENT: 6 PARM: 00000000
4. STATUS: 00030002 COUNT: 5 EVENT: 6 PARM: 00000000
5. STATUS: 00030040 COUNT: 6 EVENT: 7 PARM: 00000000
i2ctool: get: Transfer failed: 16
is failing.
The actual transaction on the bus looks perfect, right down to the NACK that terminates the read.
Switching interrupt-driven mode for polled mode doesn't change the result, though the trace log is a bit more comprehensive:
nsh> i2c get -r 0a
stm32_i2c_sem_waitdone: intstate: 1 elapsed: 500 threshold: 500 status: 00030000
stm32_i2c_process: Timed out: CR1: 0001 status: 00030000
0. STATUS: 00000000 COUNT: 1 EVENT: 0 PARM: 00000000
1. STATUS: 00020000 COUNT: 5 EVENT: 0 PARM: 00000000
2. STATUS: 00030000 COUNT: 7 EVENT: 0 PARM: 00000000
3. STATUS: 00030001 COUNT: 8 EVENT: 1 PARM: 00000002
4. STATUS: 00030000 COUNT: 9 EVENT: 0 PARM: 00000000
5. STATUS: 00070000 COUNT: 53 EVENT: 0 PARM: 00000000
6. STATUS: 00070082 COUNT: 54 EVENT: 2 PARM: 0000000a
7. STATUS: 00070080 COUNT: 55 EVENT: 3 PARM: ffffffdb
8. STATUS: 00070084 COUNT: 93 EVENT: 8 PARM: 00000001
9. STATUS: 00070080 COUNT: 94 EVENT: 3 PARM: ffffffd8
10. STATUS: 00030080 COUNT: 96 EVENT: 3 PARM: ffffffd7
11. STATUS: 00030000 COUNT: 97 EVENT: 0 PARM: 00000000
12. STATUS: 00030001 COUNT: 99 EVENT: 1 PARM: 00000001
13. STATUS: 00030000 COUNT: 100 EVENT: 0 PARM: 00000000
14. STATUS: 00030002 COUNT: 145 EVENT: 0 PARM: 00000000
15. STATUS: 00030000 COUNT: 146 EVENT: 0 PARM: 00000000
16. STATUS: 00030040 COUNT: 191 EVENT: 5 PARM: 00000001
17. STATUS: 00030000 COUNT: 192 EVENT: 0 PARM: 00000000
i2ctool: get: Transfer failed: 16
Any suggestions would be appreciated…
= Mike
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/nuttx/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/nuttx/join
(Yahoo! ID required)
<*> To change settings via email:
nuttx-digest-***@public.gmane.org
nuttx-fullfeatured-***@public.gmane.org
<*> To unsubscribe from this group, send an email to:
nuttx-unsubscribe-***@public.gmane.org
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
CONFIG_I2C=y
CONFIG_I2C_POLLED=n
CONFIG_I2C_TRANSFER=y
CONFIG_I2C_TRACE=y
CONFIG_DEBUG_I2C=y
CONFIG_I2CTOOL_BUILTIN=y
A simple I2C register read:
nsh> i2c get -r 0a
stm32_i2c_process: Timed out: CR1: 0001 status: 00030000
0. STATUS: 00030001 COUNT: 1 EVENT: 6 PARM: 00000000
1. STATUS: 00070082 COUNT: 2 EVENT: 7 PARM: 00000000
2. STATUS: 00070084 COUNT: 3 EVENT: 8 PARM: 00000001
3. STATUS: 00030001 COUNT: 4 EVENT: 6 PARM: 00000000
4. STATUS: 00030002 COUNT: 5 EVENT: 6 PARM: 00000000
5. STATUS: 00030040 COUNT: 6 EVENT: 7 PARM: 00000000
i2ctool: get: Transfer failed: 16
is failing.
The actual transaction on the bus looks perfect, right down to the NACK that terminates the read.
Switching interrupt-driven mode for polled mode doesn't change the result, though the trace log is a bit more comprehensive:
nsh> i2c get -r 0a
stm32_i2c_sem_waitdone: intstate: 1 elapsed: 500 threshold: 500 status: 00030000
stm32_i2c_process: Timed out: CR1: 0001 status: 00030000
0. STATUS: 00000000 COUNT: 1 EVENT: 0 PARM: 00000000
1. STATUS: 00020000 COUNT: 5 EVENT: 0 PARM: 00000000
2. STATUS: 00030000 COUNT: 7 EVENT: 0 PARM: 00000000
3. STATUS: 00030001 COUNT: 8 EVENT: 1 PARM: 00000002
4. STATUS: 00030000 COUNT: 9 EVENT: 0 PARM: 00000000
5. STATUS: 00070000 COUNT: 53 EVENT: 0 PARM: 00000000
6. STATUS: 00070082 COUNT: 54 EVENT: 2 PARM: 0000000a
7. STATUS: 00070080 COUNT: 55 EVENT: 3 PARM: ffffffdb
8. STATUS: 00070084 COUNT: 93 EVENT: 8 PARM: 00000001
9. STATUS: 00070080 COUNT: 94 EVENT: 3 PARM: ffffffd8
10. STATUS: 00030080 COUNT: 96 EVENT: 3 PARM: ffffffd7
11. STATUS: 00030000 COUNT: 97 EVENT: 0 PARM: 00000000
12. STATUS: 00030001 COUNT: 99 EVENT: 1 PARM: 00000001
13. STATUS: 00030000 COUNT: 100 EVENT: 0 PARM: 00000000
14. STATUS: 00030002 COUNT: 145 EVENT: 0 PARM: 00000000
15. STATUS: 00030000 COUNT: 146 EVENT: 0 PARM: 00000000
16. STATUS: 00030040 COUNT: 191 EVENT: 5 PARM: 00000001
17. STATUS: 00030000 COUNT: 192 EVENT: 0 PARM: 00000000
i2ctool: get: Transfer failed: 16
Any suggestions would be appreciated…
= Mike
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/nuttx/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/nuttx/join
(Yahoo! ID required)
<*> To change settings via email:
nuttx-digest-***@public.gmane.org
nuttx-fullfeatured-***@public.gmane.org
<*> To unsubscribe from this group, send an email to:
nuttx-unsubscribe-***@public.gmane.org
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/