[ mbm @ 22.09.2015. 11:54 ] @
Ako je nekom poznat problem sa MCP3422 mikrocipovim AD konvertorom na I2C basu voleo bih da sa mnom podeli svoje iskustvo. MCP3422 prozivam na I2C basu onako kako je napisano u data sheet-u. bar ja smatram da je tako. Bit banging i2c sam napisao dosta davno i normalno radi sa: Cypress FRAM FM24V02 memorijom (trenutno vezano fizicki na isti i2c sa problematicnim MCP3422) i RTC cipom PCF8583, EEPROM 24C04. Ploca na kojoj je FRAM i MCP3422 je sa ATMEL AT89LP828 na kome radi program a ploca se napaja sa 3,3V. Da odmah pokažem šta je problem: i2cstart i2cbajtupis (adresa) 0xD0 adresiran upis slaveacknolidge - provereno, stiže potvrda sa mcp3422 i2cbajtupis (configuration) - konfiguracioni bajt slaveacknolidge - stiže potvrda sa mcp3422 pauza 1 sekund i2cstart - restart i2cbajtupis (adresa) 0xD1 adresirano citanje slaveacknolidge - stiže potvrda sa mcp3422 x1=i2ccitanje masteracknolidge x2=i2ccitanje masteracknolidge x3=i2ccitanje masterNOTacknolidge - za prekid citanja sledecih bajtova i2cstop Pokušao sam i da ne radim restart i2c za ocitavanje kao gore vec da iza slaveacknolidge posle konfiguracionog bajta dam stop ali nije vredelo isto se dešava. Kako god citao, pa i sa 4 bajta ako pošaljem prethodno konfiguraciju da je konverzija 18 bita. uvek ali apsolutno uvek dobijam x1 koji je promenljiv ako menjam ulazni napon na odabranom ulazu (mcp3422 ima 2) x2 0xFF x3 0xFF pa i x4 ako je citano uvek je 0xFF. Problem je što x3 ili ako je 18 bita izabrano onda x4 bi morao da sadrži ranije poslati konfiguracioni bajt ali se to nikad ne dogada. Naravno sasvim je ocigledno i da se ne pojavljuje podatak iz AD konverzije u x2 ili i u x3 bez obzira što sam prošetao ulaz od pocetka do kraja, reaguje samo x1. Pokušao sam da za probu šaljem POR (power on reset) ili start konverzije kao GENERALL CALL na i2c i rezultati su isti. Nekako mi deluje da Microchip ne može da se meri sa drugim proizvodacima osim što ih sve prevazilazi u zaradivanju para. Molim vas moje drage kolege i koleginice da date svoje mišljenje o ovom problemu. Svakako je moguce da vi vidite nešto što sam ja prevideo. Još nešto, U datasheet-u piše da MCP3422 slave postavlja svoj SDA (0 ili 1 šta vec treba) na SILAZNU CLK ivicu ali to nije baš tako u I2C standardu vec se dešava 5 mikrosekundi kasnije (ili možda grešim?). Nestrpljivo ocekujem vaša mišljenja i sugestije... |