AIM

MSN

Website URL

ICQ

Yahoo

Jabber

Skype

Location

Interests

I need to generate test data for evaluating I2C, SPI and CAN devices (only one test at a time, so multiple simultaneous patterns are not necessary).
I've tried to get the Analog Discovery 2 to do that and it doesn't look like it will.
I've looked at the Digital Discovery and it's not clear that it can do that either.
I'm hoping I don't need a US$600+ device.
Any recommendations would be appreciated.
Thanks

Hi all
I would like to try the Protocol I2C function in WaveForms, and I set DIO7 as SCL, then I connect DIO7 to DIO15, and set Logic analyzer to watch I2C signal.
After I clicking Write button on Protocol UI, the Logic UI didn't show the clock signal. Can't I do this?
I tried UART also. It work fine.
Thanks

I need to read some data (a serialnumber to be specific) out of an eeprom. The eeprom I am using supports I2C. in additon to that I'm accessing the openscope mz via json-strings. So I got some questions/problems.
Does the openscope mz support i2c? if yes how to I access this with json-commands
If it doesn't support i2c I would use an bus-bridge (something like this) to convert it to spi. On the reference website it says the boards supports spi. But I can't find any solution on how to connect to this pins via http. Has anybody some information or recommended websites where I can look for solutions. (If anybody has already some tips I would like to hear them)
thanks for your help.

Hi there folks,
great to meet you.
Recently the company i work bought an Analog Discovery 2 to work with, and all I can say is - This is a great instrument, although I am using very small amount of its power.
I have noticed something that lost me 2 days of work to discover that the problem is not my communication but in the way that the data is read by the AD2.
The setup is like this - I have two boards communicating over I2C to each other and I am monitoring the messages in the Protocol part of the Waveforms.
When i am sending large packets with more than 5 bytes of data there are some errors appearing on the tool but the messages actually are all right.
My guess is that the discretization frequency is too small so it is getting errors in messages (i have seen this too when I have used the logic analyzer part of the software, although the I2C speed is 100kHz, when the scan frequency is smaller than 400kHz the protocol is not decoded in the right way.) There is no way(as far as I have tried) to adjust the frequency in Protocol mode. I am uploading pictures, hope it gets clear.
Another thing is that the buffer that it stores the information from the protocol is quite large and the tool(waveforms) starts to work slowly, maybe it will be good to be able to adjust the size and flush the buffer more frequently.
I will be glad to here from you is there a way to fix this issues. Thanks in advance.

Greetings,
Is there a toolkit, etc. for use with the AD2 and Labview for I2C or SPI? I would like to monitor and simulate if possible. I have download and looked at both the Waveforms toolkit and AD2 toolkit, but did not immediately see this functionality. I'm guessing no such bundled library exits. Thank you
Cheers,
JMA

Hi !
I am interested in using the Digital Discovery controlling multiple devices at the same time with different protocols.
E.g.
I would like to setup the UART on the digital discovery on DIO 28 as TX and 29 as RX while using SPI at the same time on the default setup DIOs as 24/CS, 25/CLK, 26/DQ0/MOSI, 27/DQ1/MISO.
Using then I2C on e.g. 31/SCL and 30/SDA and CAN on 36/RX and 37/TX on top of that would be very nice as well.
Is this possible from the user interface (which I would prefer) or do I need to create custom code for that?

Hello, I want to use the AXI IIC bus Interface found in Vivado to read data from several MLX90393 sensors. My question is about the amount of AXI IIC interfaces needed for this. Is it enough to use only one, or is it necessary to use one for each sensor that will be used? Thanks in advance.
MLX90393-Datasheet-Melexis.PDF

Hello,
I have an Analog Discovery (legacy) and the latest Waveforms app. I am trying to write a script that makes the protocol module write to a 24C16 eeprom, read it back, and print to the screen or window. I can access th I2C (can see on my scope), but I can't print anything. The print() function does nothing unless in debug mode, but then the app seems to hang. I tried Custom mode and Sensor mode. And I tried the ADXL345 example, with a known good breakout board, and it always returns the same thing, doesn't change with orientation of the chip (but my main concern is the eeproms)
Why is the output window at the bottom of the script area only one line long. The only thing that shows up there is the results of return statements.
How can I see the I2C and run the script at the same time ? The logic analyzer only shows the first two I2C bytes, so I'm using an external scope.
What does the manual mean when it says the the I2C can only send when in debug ? Isn't that a show-stopper ? Am I missing some key piece of documentation ? The manual does not say much about how all of this stuff works.
- Thanks

Good evening! I am trying to use an Adafruit BNO055 breakout board with a ChipKit uC32 board, but there’s some kind of underlying bug causing the initialization code to fail. I’ve tracked it down to how the reset of the BNO055 is happening, but I’ve hit a wall at how to go deeper. Any advice would be welcome.
Hardware used:
Adafruit Feather Bluefruit LE
Digilent ChipKit uC32
Adafruit BNO055 orientation board breakout
Breadboard, wires, etc. Photos of hardware setup attached.
To start, I tested using the BNO055 and the Adafruit sensorapi example sketch on an Adafruit Bluefruit LE via the I2C connection. This worked just fine. I've used it for other projects in the past, so that's old hat:
https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/overview
https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
Then, when I first tested the uC32 with the normal ChipKit-core distribution found via the ChipKit-core url, the I2C implementation was broken. None of the 3 different I2C sensors I had worked. After following the instructions to update ChipKit-core to 1.1.0-13 to fix I2C bug, as suggested below, I as able to connect to devices via I2C:
http://chipkit.net/forum/viewtopic.php?t=3585
http://chipkitjenkins.wayneandlayne.com/job/chipKIT-core%20PR%20Builder/77/
Note: I did set JP6 and JP8 to enable the I2C interface on the uC32.
Tested ChipKit uC32 using the I2C interfaces on the Adafruit BME280 and Si1145 breakout boards. Both worked just fine. Data was read and written properly.
Unfortunately, when connecting the BNO055 orientation board from here:
https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview
The board is recognized (by the device ID of 0xA0), but then the ChipKit uC32 hangs after first println in the sensorapi example sketch. It goes into the bno.begin() call and never returns.
Since I can’t do any deeper debugging in the main library, I copied out the BNO055 library (called it C_BNO055) and built against my version. Started with no changes other than the name of the library, include guards, and filenames. Worked just fine on Bluefruit LE, but exhibited the same issues on the uC32.
My source code for the library modified for testing is attached to this post.
I had combined the three breakout boards into a single program. This worked just fine on the Bleufruit LE, and it accessed all three sensors without issue, but the same bno.begin() call would hang everything.
So, I stripped out the other sensors and tested with debugging messages in my custom bno.begin() definition found in C_BNO055.cpp.
The code executes until the first BNO055 reset is attempted. Writing 0x20 to the BNO055_SYS_TRIGGER_ADDR resets the sensor. This loop then waits for the device to return 0xA0 for the chip ID, which indicates that it's ready to be used again.
Serial.println(" [x] Doing a reset and waiting for the address to stabilize.");
write8(BNO055_SYS_TRIGGER_ADDR, 0x20);
while (read8(BNO055_CHIP_ID_ADDR) != BNO055_ID)
{
Serial.print(" [x] Waiting for BNO055 to reset. ADDR of: ");
Serial.println(read8(BNO055_CHIP_ID_ADDR), HEX);
delay(10);
}
delay(50);
Serial.print(" [x] BNO055 address is now: ");
Serial.println(read8(BNO055_CHIP_ID_ADDR), HEX);
That loop runs about 8 times (see attached screenshot) for the ChipKit uC32, then just stops. Every read it gets an ID of 0x00 (zero).
When the same code is run on the Bluefruit LE, it gets an ID of 0xFF until the board resets (see attached screenshot). Then it gets 0xA0 like it should and continues execution, and my larger program is able to read/write to the BNO055 and other sensors on the same I2C bus.
I believe there’s some kind of issue in the ChipKit-core implementation for I2C that’s being exposed by the series of calls leading up to the reset of the BNO055 board. I’m not sure how to proceed at debugging or testing the system. Any advice or investigation would be welcome.
I have:
Changed the I2C address of the BNO055 by connecting the ADR pin to Vcc and changing the address in the .h file. Worked for Bluefruit, not for uC32.
Commented out that address check and added in a delay(300) call. While the code progressed, it crashed when trying to access other I2C devices in loop().
Tried a similar test on a ChipKit MX3ck board with the same results.
I’ve tried re-wiring the board/jumpers and testing my solder joints.
I'm trying to get this board working on the uC32 as part of the sensor package we're building for the WSU Aerospace Club's rocket. If you'd like me to bring my hardware for testing to Digilent, just let me know via email and I'd gladly cross town to get some help.
Thank you for your time.
-- Aaron Crandall

I'm writing an I2C interface in python in order to get a real-time stream from a peripheral device and do some additional processing.
I have been able to get everything set up such that my peripheral ACKs my request. However, I'm curious for what your strategy is for handling the next packet depending on ACK/NACK.
Originally I was just using a digital read at the start of the transmit (Start + Address) and processing the response to detect ACK, then setting up the device for the next transmit (data). However, the USB back/forth is way too slow, so I'm assuming you set everything up in advance in Waveforms I2C to trigger on an ACK.
I tried a few methods of setting the output to trigger from I/O states, but I haven't been able to get it to work quite right (is there a way to force a trigger?).
Can you briefly explain the general flow for how you set the AD2 up to handle I2C as master in Waveforms?
Thanks,
Kyle

Hello,
I am trying to initialize the ADV7611 Chip of the Digilent FMC-HDMI add-on Board. But I can't find the needed addresses for it (this doesn't help). I am using the xiic.h Driver from xilinx. The initalization of ADV7511 Chip of the zc702 was successfully.
Have anyone a idea??
I am using the zc702 and the digilent FMC-HDMI Card.

I'm using Waveforms with the AD2 device to do some I2C debug. I'm running into an issue where my slave device hangs because the AD2 master doesn't ACK the final data transmission before sending the STOP signal. I believe it is supposed to per the I2C spec.

Hi everybody, thaks for your time.
I'm a new Xilinx user and I'm learning about VHDL language and FPGA. In this opportunity, I want to establish a I2C communication between Zedboard and PmodACL. I'm implementing the tutorial "Getting Started with Digilent Pmod IPs", and I have some doubts:
1) I've installed the "vivado-library-2015.4-3", but when I search the info in board section about Pmod there is nothing:
2) When I click on "Generate Bitstream" I get this error:
With this lines:
Running DRC as a precondition to command write_bitstream
INFO: [DRC 23-27] Running DRC with 2 threads
ERROR: [DRC 23-20] Rule violation (NSTD-1) Unspecified I/O Standard - 8 out of 146 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: pmod_out_pin10_io, pmod_out_pin1_io, pmod_out_pin2_io, pmod_out_pin3_io, pmod_out_pin4_io, pmod_out_pin7_io, pmod_out_pin8_io, pmod_out_pin9_io.
ERROR: [DRC 23-20] Rule violation (UCIO-1) Unconstrained Logical Port - 8 out of 146 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: pmod_out_pin10_io, pmod_out_pin1_io, pmod_out_pin2_io, pmod_out_pin3_io, pmod_out_pin4_io, pmod_out_pin7_io, pmod_out_pin8_io, pmod_out_pin9_io.
WARNING: [DRC 23-20] Rule violation (BUFC-1) Input Buffer Connections - Input buffer pmod_out_pin1_iobuf/IBUF (in pmod_out_pin1_iobuf macro) has no loads. An input buffer must drive an internal load.
WARNING: [DRC 23-20] Rule violation (BUFC-1) Input Buffer Connections - Input buffer pmod_out_pin4_iobuf/IBUF (in pmod_out_pin4_iobuf macro) has no loads. An input buffer must drive an internal load.
INFO: [Vivado 12-3199] DRC finished with 2 Errors, 2 Warnings
INFO: [Vivado 12-3200] Please refer to the DRC report (report_drc) for more information.
ERROR: [Vivado 12-1345] Error(s) found during DRC. Bitgen not run.
INFO: [Common 17-83] Releasing license: Implementation
ERROR: [Common 17-39] 'write_bitstream' failed due to earlier errors.
I think it's because in the block design I could not open the Pmod corresponding to the Zedboard and then the pin assignment is not elaborated.
So, how can i do to import the complete library for Zedboard pmod?
Or, which is the order for Pmod pin assignment?
Bests reggards, Oscar.

Can someone please point me to a manual for the Protocol section of the Waveforms software?
I would like to send an I2C command over a bus but I am getting an I2C bus error. Verify the signal pull-ups error. I do have the appropriate pullup resistor however.
Also, it's not clear how the interface works. A manual would be useful.
Thanks,
Dave

I have designed a board to program serial flash memories using the JTAG-SMT2-NC operated as an SPI master.
This works fine but now I want to use the same board to program an I2C EEPROM (on a different target).
FTDI's document "USB to I2C Example using the FT232H and FT201X devices" suggests that this should be possible and I belive that the JTAG-SMT2-NC uses the FT232H.
Has anyone tried this?
What would the mapping of the connections be? I imagine that it would be:-
TMS - connect to Write Protect on the EEPROM
TCK - connect to I2C's SCK
TDI, TDO - tie together and connec to I2C's SDA
alternatively I suppose that one could bit-bash the GPIO pins (GPIO0, GPIO1, and GPIO2) but this would require a hardware change to my adapter that I'd prefer to avoid.

Hi, I've created a custom software program in C++ that uses analog discovery 2 and I have two questions.
1. I want to read some data using I2C interface, but I'm having trouble on the idea of how should I set up a "typical I2C" interface in C++. Is there an example anywhere on how exactly can this be accomplished in C++?
2. When reading the on-board temperature value in C++ I keep receiving a constant value if I'm doing multiple reads in a row. How can I fix it so that every time I read the AD2 on-board temp value I would get an updated temp value not the initial value?
Thank you!

Hi,
I have the Zybo Zynq 7000 board (Z-7010).
I also have a Ti Msp430G2 launchpad.
I need the Zybo to be the Master I2c , send request data from the Ti Chip.
In Zybo i'm Using the I2c_0 Built in controller on the ps, i've tried the following Examples with no success(test failed Everytime):
xiicps_polled_master_example.c
xiicps_slave_monitor_example.c
then i tried to to troubleshoot the problem, i'v used the xiicps_polled_slave_example.c and on the Ti Chip i used the wire library, as I2c Master and a c program that Scans Addresses - this works
Therefor all the connections and vivado config are fine.
How can find a working Master Program for zybo?

Hi,
I have the Zybo Zynq 7000 board (Z-7010).
I want to receive data from Multiple Devices via I2C protocol.
In the PS there are 2 I2C Controllers.
The Steps i made so far:
1) In vivado i created the ip : Zynq7 processing system.
2) i'v enables the I2C 0 controller and routed it to Emio.
at this point i need 2 pins: clock and data, but instead i have 6 pins:
where should i connect the pins?
after Exploring this issue online i saw another option : using the Axi_IIc ip, With the same problem:

I'm having problems printing data on-screen, when the program is about to write it, the board freezes, it won't even allow me to reset.
In the module of the MAX30100, Vin is connected to 3,3v, GND to GND, SCL to RB8, SDA to RB9, there are also 4k7 resistances conected between SDA and 3,3v, the same goes for SCL and 3,3v. INT remains unplugged.
The almost fully white screen is the result of using the ChipKit board.
The image filled with data shows the results obtained with an Arduino UNO board, wich were proved right with a saturometer.
The last image shows the module for the MAC30100.
The files are the libraries used and the program.
I tried changing the communication speed from 100kHz to 400kHz but there wasn't any changes.
I also tried it with a pull-up resistence on the INT port of the MAX30100.
examples.7z
MAX30100.7z

Hello,
I am a new user of analog discovery. I have an Arduino talking to my sensor through a 5v to 3.3 V level converter using I2C protocol. The code works fine and gets me the desired output on the serial port but when I try to connect the SDA and SCL lines to the analog discovery on the pin 7 (Data) and Pin 15 (clock) lines, I dont see any signals getting recorded. I am interested in seeing the clock and data lines with the addresses and data that is being written on the lines. But it either gives me Error status or no result after getting triggered. The snapshot is attached below:
I wanted to know if I am following all the necessary steps in initializing the analog discovery.
1. Connect the wires to the 2 digital lines of analog discovery ( Pin 7,15 here)
2. Assign the right DIO pins as data and clock lines in the waveforms software.
3. Click the Red T button to set the trigger option. --> Start signal as trigger is the condition I used in the image below.
but I also tried different trigger settings like, SDA = Ignore and SCL = Rising edge. Both of them gives me the error blocks as below.
3. Click Run button
4. Reset the Arduino.
5. Stop.
I am interested in seeing the start, addresses in hex, ACK/ NACK signals labeled. Can anybody tell me if there is some required program to be run before I able to see them?
Thanks & Regards,

Would it be possible to emulate a I2C slave using the digital discovery (using scripting)?
If not, is this something that could potentially be added in the future, or are there any HW limitations that make this infeasible?

Hello,
I'm using waveforms to control some I2C communication. the first byte interpreted is wrong, waveforms should read 0xC0 but reads 0x60 instead. Other bytes are good.
(see attached picture)
Is there a setting I missed?
Regards
edit: I have waveforms 2015 for windows version 3.5.4