• Content Count

  • Joined

  • Last visited

  1. Hello! This is my point of view for I2C decoder. 1. START-STOP without any data transfer is allowed, not an error. 2. SDA changing on SCL falling usually work but sometimes need a detection. 3. SDA changing on SCL rising not allowed in standard but can work. This custom script can be configured: a. View all byte or "bit by bit". If an error during byte decoding is detected view changes to "bit by bit" till next byte. b. Detections of 1, 2, 3 have own settings. c. Jitter detector width. With best regards, Mikhail. P.S. I2C_decoder a few times updated. I think now it is well optimized but still simple. Why did I write this script? I work with an LCD controller (RW1087) through I2C. In static mode, you need to write one byte for each segment of the LCD. So, 128 segments -> 128 bytes, this takes too much time. So I skipped some recommendations. For example, “change SDA only after changing SCL”, I write one value to the microcontroller port for both. But because of the jitter between the SCL and the SDA, the I2C decoder built into the WavesForms cannot decode the signal properly. I2C_decoder3.dwf3work
  2. I2C decoding. Theoretically, this decoding example is correct, this is a “STOP event”. But almost everything works fine, for the I2C slave, these fronts are simultaneously. Maybe add settings for the "gap" or something else? LCD_I2C_error.dwf3work
  3. Hello! Proposition. Please add different subaddresses for Write and Read. Or remain subaddress only for reading because subaddress make sense only for it. With best regards, Mikhail.
  4. In protocol analyser sometimes loses the border of data packet. It depend from the X axis scale. SPI.dwf3logicacq
  5. Hello! In pattern generator. When I set "Duty" for "Clock" signal to small value like 0.01% ... 0.1% preview turns to noise. Also happen with "Pulse". But the signal is good like described by settings. With best regards, Mikhail.
  6. Hello! Can be "Logic Detector" added to trigger menu in "Scope" instrument? I use this workaround in WaveForms V3.11.7 (beta, Windows, 64 bit): 1. In AD2 settings set "Trigger 1" to "Logic Detector" 2. In "Scope" use "Trigger 1" as trigger. With best regards, Mikhail.
  7. Hello! This is simple I2C slave realised by ROMs. For test it you need to connect (do not forget pull up resistors): SCL - DIO3 SDA - DIO1 & DIO10 There are two ROM blocks. The small one - convert SDA output (DIO0) from PUSH-PULL to OPEN DRAIN (DIO10). DIO1 - SDA input, DIO0 - SDA desired output, DIO10 - SDA open drain otput. The big one - I2C logic. You can configure truth table with help of excel file. The state machine is like a BASIC program with string numbers with goto on the end of each. Header: ADDR - address of slave on I2C ANSWER - repeated answer byte "Program": IDLING - keeps state and shift actual SCL & SDA to previous SCLP & SDAP. INIT (0) - executes once at start STOP (1) - executes STOP on I2C START (2) - executes START & RESTART on I2C and so on fro each bit. Take an attention to change from READ to WRITE and back. Read is a simple match of rising SCL (SCLP=0 & SCL=1). Write needs 2 falling SCLs - first set the value the second turns back to read. So you need an intermediate state for rising SCL. With best regards. P.S. For longer answer you need more ROM size. So you must use another configuration (#4 for AD2, logic: 16x16k). I2C.dwf3work I2C.xlsx