Kudos Matt ! You are welcome!
BR, Alan On 12/8/20, Matt DeWall <mdew...@gmail.com> wrote: > Thank you everyone, such a helpful community! I was able to get the > i2ctool working and it found my screen. > > I'm off to my next steps. :) > > Matt > > On Tue, Dec 8, 2020 at 1:44 PM <disruptivesolution...@gmail.com> wrote: > >> Hello Matt, >> >> You have 2 enable i2ctool in make menuconfig (also see blog Alan): >> >> https://acassis.wordpress.com/2019/01/19/how-to-use-nuttx-i2c-scan-features/ >> >> And then on the prompt in NuttX you can do the command say: >> i2c dev -b 1 0x00 0x7f >> >> It will show you the used I2C addresses. >> >> Hope this will help you! >> >> With kind regards, >> Ben >> nuttx.nl >> >> >> -----Oorspronkelijk bericht----- >> Van: Matt DeWall <mdew...@gmail.com> >> Verzonden: dinsdag 8 december 2020 21:17 >> Aan: dev@nuttx.apache.org >> Onderwerp: Re: ssd1306 oled help >> >> Thanks everyone - apologies for the delay, some other priorities blocked >> me. >> >> Looks like I was getting bit by cygwin and "make clean_context all" got >> me >> sorted out and actually reflected my changes. >> >> However, I'd like to understand how to get the i2ctool working. I was >> able to add it and see it in nsh, though it reports that no buses are >> found. >> >> I added this to my stm32_bringup.c (ripped it from the stm32f4discovery): >> >> >> --------------------- >> #if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL) static void >> stm32_i2c_register(int bus) { >> FAR struct i2c_master_s *i2c; >> int ret; >> >> i2c = stm32_i2cbus_initialize(bus); >> if (i2c == NULL) >> { >> syslog(LOG_ERR, "ERROR: Failed to get I2C%d interface\n", bus); >> } >> else >> { >> ret = i2c_register(i2c, bus); >> if (ret < 0) >> { >> syslog(LOG_ERR, "ERROR: Failed to register I2C%d driver: %d\n", >> bus, ret); >> stm32_i2cbus_uninitialize(i2c); >> } >> } >> } >> #endif >> >> >> /**************************************************************************** >> * Name: stm32_i2ctool >> * >> * Description: >> * Register I2C drivers for the I2C tool. >> * >> >> >> ****************************************************************************/ >> >> #if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL) static void >> stm32_i2ctool(void) { >> stm32_i2c_register(1); >> #if 0 >> stm32_i2c_register(1); >> stm32_i2c_register(2); >> #endif >> } >> #else >> # define stm32_i2ctool() >> #endif >> >> ---------------------- >> >> Yet when I run the i2ctool from nsh I get this: >> >> nsh> i2c bus >> BUS EXISTS? >> Bus 0: NO >> Bus 1: NO >> Bus 2: NO >> Bus 3: NO >> Bus 4: NO >> Bus 5: NO >> >> I'd like to understand how to get this tool running as I'll probably be >> needing it in the future. :) >> >> Thanks everyone! >> >> Matt >> >> On Sun, Dec 6, 2020 at 5:56 AM Alan Carvalho de Assis <acas...@gmail.com> >> wrote: >> >> > Hi Matt, >> > >> > Sorry my delay to reply. >> > >> > As Mr. Greg pointed the issue is related to your OLED display I2C >> address. >> > >> > Normally these OLED display has an Address Select using a 0R resistor >> > to 0x78 or 0x7A. >> > >> > You need to setup the CONFIG_SSD1306_I2CADDR with the right address. >> > >> > Also as Mr. Ben suggested, using the i2ctool you can scan your I2C bus >> > and find the I2C address that your display is using. >> > >> > Any issue, please let us to know. >> > >> > BR, >> > >> > Alan >> > >> > On 12/4/20, Matt DeWall <mdew...@gmail.com> wrote: >> > > Didn't know about that one, thanks! Found one of Alan's articles >> > > for >> > that >> > > and gonna give that a shot. >> > > >> > > Matt >> > > >> > > On Fri, Dec 4, 2020 at 5:01 PM Disruptive Solutions < >> > > disruptivesolution...@gmail.com> wrote: >> > > >> > >> Did you try the i2c tool? >> > >> >> > >> Op za 5 dec. 2020 1:58 a.m. schreef Matt DeWall <mdew...@gmail.com>: >> > >> >> > >> > Got it. Ok - looks like my 116 errors were from my later >> > >> > experimenting. >> > >> > If I completely disconnect or try other i2c pins, I get 116, so >> > >> > that >> > >> makes >> > >> > sense. >> > >> > >> > >> > So it looks like when I connect the pins correctly I'm getting >> > >> > the 6 >> > >> error. >> > >> > >> > >> > I'm wondering if that just means somehow my device has an i2c >> > >> > address >> > >> that >> > >> > isn't the default that the driver is looking for? >> > >> > >> > >> > Mat >> > >> > >> > >> > On Fri, Dec 4, 2020 at 4:25 PM Gregory Nutt <spudan...@gmail.com> >> > >> > wrote: >> > >> > >> > >> > > Should have mentioned that the error code 6 is defined in >> > >> > include/errno.h: >> > >> > > >> > >> > > #define ENXIO 6 >> > >> > > #define ENXIO_STR "No such device or address" >> > >> > > >> > >> > > And errcode code 116 is: >> > >> > > >> > >> > > #define ETIMEDOUT 116 >> > >> > > #define ETIMEDOUT_STR "Connection timed out" >> > >> > > >> > >> > > Which is also reported by as an I2C failure by >> stm32_i2c_transfer(): >> > >> > > >> > >> > > if (stm32_i2c_sem_waitdone(priv) < 0) >> > >> > > { >> > >> > > status = stm32_i2c_getstatus(priv); >> > >> > > ret = -ETIMEDOUT; >> > >> > > >> > >> > > On 12/4/2020 6:19 PM, Gregory Nutt wrote: >> > >> > > > >> > >> > > > As far as I can tell, this looks like an I2C problem. Alan >> > problem >> > >> > > > knows better than I. >> > >> > > > >> > >> > > > I think the failure sequence is: >> > >> > > > >> > >> > > > fs/vfs: >> > >> > > > ioctl(FBIO_UPDATE) >> > >> > > > >> > >> > > > drivers/video/fb.c ioctl method: >> > >> > > > ret = fb->vtable->updatearea(fb->vtable, area); >> > >> > > > >> > >> > > > drivers/lcd/lcd_framebuffer.c, function >> > >> > > > lcdfb_updateearea(): >> > >> > > > ret = pinfo->putrun(row, startx, run, width); >> > >> > > > >> > >> > > > drivers/lcd/ssd1306.c, putrun method: >> > >> > > > Calls ssd1306_sendbyte() >> > >> > > > >> > >> > > > arch/arm/src/stm32/stm32_i2c.c, >> > >> > > > else if (status & I2C_SR1_AF) >> > >> > > > { >> > >> > > > /* Acknowledge Failure */ >> > >> > > > >> > >> > > > ret = -ENXIO; >> > >> > > > } >> > >> > > > >> > >> > > > So my best guess is that there is some issue with your I2C >> > >> > > > interface. >> > >> > > > It might be failing to acknowledge. >> > >> > > > >> > >> > > > On 12/4/2020 4:56 PM, Matt DeWall wrote: >> > >> > > >> Hello NuttX devs! >> > >> > > >> >> > >> > > >> I've followed Alan's great tutorial on setting up an OLED on >> > >> > > >> the >> > >> Blue >> > >> > > Pill >> > >> > > >> stm32f103-minimum board but running into trouble. >> > >> > > >> >> > >> > > >> Video: >> > >> > > >> https://www.youtube.com/watch?v=TZ4i71ArtRo&t=245s >> > >> > > >> >> > >> > > >> * I've compiled, flashed, and able to get into nsh >> > >> > > >> * The fb driver is listed as /dev/fb0 and the 'fb' app is >> > >> > > >> present >> > >> > > >> * When I run the 'fb' app I get repetitive errors, two >> > >> > > >> different >> > >> > codes, >> > >> > > but >> > >> > > >> usually '6' (sometimes '116') >> > >> > > >> >> > >> > > >> -------------------------- >> > >> > > >> nsh> fb >> > >> > > >> VideoInfo: >> > >> > > >> fmt: 0 >> > >> > > >> xres: 128 >> > >> > > >> yres: 64 >> > >> > > >> nplanes: 1 >> > >> > > >> PlaneInfo (plane 0): >> > >> > > >> fbmem: 0x20002f40 >> > >> > > >> fblen: 1024 >> > >> > > >> stride: 16 >> > >> > > >> display: 0 >> > >> > > >> bpp: 1 >> > >> > > >> Mapped FB: 0x20002f40 >> > >> > > >> 0: ( 0, 0) (128, 64) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 >> > >> > > >> 1: ( 11, 5) (106, 54) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 >> > >> > > >> 2: ( 22, 10) ( 84, 44) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 >> > >> > > >> 3: ( 33, 15) ( 62, 34) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 >> > >> > > >> 4: ( 44, 20) ( 40, 24) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 >> > >> > > >> 5: ( 55, 25) ( 18, 14) >> > >> > > >> ERROR: ioctl(FBIO_UPDATE) failed: 6 Test finished >> > >> > > >> >> > >> > > >> >> > >> > > >> * I have verified that the screen is working and wired up >> > >> > > >> correctly >> > >> > > using >> > >> > > >> an Arduino Mega. >> > >> > > >> * I'm using this ssd1306 HiLet Go 128X64 OLED: >> > >> > > >> >> > >> > > >> > >> > >> > >> >> > >> https://www.amazon.com/gp/product/B06XRBTBTB/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1 >> > >> > > >> * AFAIK I've done an apples/apples with the tutorial, same >> board, >> > >> same >> > >> > > >> screen, same wiring, but no luck. >> > >> > > >> >> > >> > > >> I'm at a loss, as debugging at this low of a level is pretty >> > >> > > >> foreign >> > >> > to >> > >> > > >> me. It feels like I've missed something easy, but I've >> > >> > > >> triple >> > >> checked >> > >> > > the >> > >> > > >> connections and config and not sure where to go from here. >> > >> > > >> >> > >> > > >> Thanks! >> > >> > > >> >> > >> > > >> Matt >> > >> > > >> >> > >> > > >> > >> > >> > >> >> > > >> > >> >> >