I2C Digital Waveform Library Timing Parameters

Does anyone know how the cluster of "I2C Timing (ns)" is being done in the following code?  It is an abridged version of the example VI "HSDIO I2C - Hardware Compare.vi" downloaded from here.  It uses the I2C Digital Waveform Reference Libarary.
The time on the X-Axis does not seem to be any help, and the front panel parameters are very cryptic in their naming system.  Does anyone know what all those numbers mean and how it correlates to the actual times (dt) between each point?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If someone helped you out, please select their post as the solution and/or give them Kudos!
Solved!
Go to Solution.

I finally found where the parameters are specified.  They can be found in the UM10204 I2C-bus specification and user manual.
Under the current revision 5, it is found in Table 10 on page 48:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If someone helped you out, please select their post as the solution and/or give them Kudos!

Similar Messages

  • SPI Digital Waveform Library

    Please provide feedback, comments and questions on the SPI Digital Waveform reference library in this thread.
    - David
    (posted by Christian on behalf of David)

    Hi JeyZ -  In the past, I've worked with microprocessor-based slave devices that have nondeterministic response times to a given query from the master. For example, I would send a data query in the first byte, then expect to clock out the data from the slave in the next byte. If the slave device wasn't done with its search/retrieve routine, it had no data in the output register so all I clocked in was x"00". Could something like this be happening to you? Do you have a datasheet for the slave device you're communicating with that you can link publicly? You may also try using the SDW library to build the waveform. It will guarantee that timing parameters for the bus are met and all edges in the waveform conform to protocol requirements. Alternatively, I can only ask that you post more information about your application software and the device you're communicating with, so we can help you debug it. In response to your question about using the 6229 for I2C, that device does not have a per-cycle tristate feature. At present, only the 655x devices support that capability. Without it, you would have to do a lot of work to get this device communicating over I2C, and I can't guarantee it'll be possible in the end.

  • I2C Library Timing Problem

    I'm trying to create a module using the I2C Digital Waveform Reference Library:  http://zone.ni.com/devzone/cda/epd/p/id/6080
    The trouble I'm running into is programming the timing into the Init VI.  The timings I define in the input cluster from a particular IC's datasheet don't seem to hold; the coerced timings cluster shows all 0 for each timing value.  Has anyone gotten this to work?

    Hi Jeanius -
    1: You're right about the 6224: it can't tri-state its buffers in a single period of the sample clock, so it can't be used with the IDW in its native form. Changing the 'Z' states to '1' in the IDW waveform will make the waveform compatible with DAQmx devices, but remember that I2C is an open-drain bus and isn't designed for active-drive outputs. If you attempt to receive data from your slave device, you won't be able to see the message returned by the slave because your 6224 will be driving a '1' onto the bus instead of a Z. Likewise, you won't be able to address multiple slaves or listen for ACK/NACK conditions returned by the slaves. You'll essentially be "blind" as the bus master.
    2: Replacing the 'Z' bits in the IDW waveform after it's been generated is a slow and inefficient process. It's better to directly modify your copy of the IDW library instead, so it creates waveforms with '1" as the high state. Given the caveat I mentioned above, here's how to do it: Open each of the following VIs on your IDW palette and replace every instance of the constant 'Z' that you see with a '1'. (You can just click on the Digital Values Ring constant and select 1 from the menu.)
    - Add Start Condition.vi
    - Add Addr Byte.vi
    - Add Clocked Bit.vi
    - Add Stop Condition.vi
    - Interpret Data.vi
    Here's an example from Interpret Data.vi:
    I should also mention that I would have responded sooner to your question, but I don't actively monitor posts on this topic outside the IDW, SDW, and JDW forums. If you have any more questions about using the IDW, post in the forum that Misha linked above and I'll get a notification of your post. This guarantees you a timely reponse from me or someone else who knows the topic.
    Message Edited by David S. on 07-20-2009 10:01 AM
    David Staab, CLA
    Staff Systems Engineer
    National Instruments

  • Digital waveform reference library for windows 7

    Hi,
    Where can i find digital waveform reference library for JTAG/SPI/I2C for windows 7 I was only able to find it for windows vista/XP
    Thanks
    chintan

    Hi chintan,
    What reference libraries are you referring to that are only for XP/Vista and not Win 7? Can you point me to where you found that?  When I searched, I found these three links. Are these the libraries you're inquring about?
    - JTAG Digital Waveform Reference Library
    http://zone.ni.com/devzone/cda/epd/p/id/6157
    - I2C Digital Waveform Reference Library
    http://zone.ni.com/devzone/cda/epd/p/id/6080
    - SPI Digital Waveform Reference Library
    http://zone.ni.com/devzone/cda/epd/p/id/6163
    The VI's listed on these pages were originally written for LabVIEW 8.2, 8.5, and 8.6, but they should still work all versions of LabVIEW up to the most current version 2010 SP1. Are you having problems opening these? Any specific errors you're seeing?
    Also, I'm not sure if you've seen this document yet or not, but this is a tutorial addressing exactly what you're describing.
    - Serial Protocol Communication Reference Design for Digital Waveform Devices
    http://zone.ni.com/devzone/cda/epd/p/id/6200

  • JTAG Digital Waveform transfered using USB or parallel port ?

    Hi all
    I was wondering if there is a way to send JTAG Digital Waveforms generated by LabVIEW into a parallel port or USB port.  I know that there is a way to use DAQmx devices with JTAG Digital Waveforms where DAQmx drivers take JTAG Digital Waveforms and transfer that into physical signals which is then send to UUT.  I really am in a need to try to mimic whatever a DAQmx can do to make that happen with a parallel port or usb port. I would really appreciate if you can help me it is very urgent.
    Thanks

    Hi Cristopher
    I do really appreciate for a quick response. I am full aware of the fact that NI products for digital waveform generation will do the job, plus it is easier to implement them. However my goal is to use an inexpensive device that can generate external timing and my JTAG library and make .exe files from my final code and distribute that setup for several computers in factory. So buying several digital waveform generators from NI for each PC in factory will be a very expensive option. I think now you have a better picture why I am trying to find another inexpensive way to implement these digital waveforms using JTAG library. It would be ideal if I can use parallel port with some external timing to do the trick but I am really not sure where to start. Cirstopher I would really appreciate if you can come up with any suggestions in regards to this problem that I am having.
    Thanks again.

  • How do I output three digital waveforms at once?

    I posted this in Digital I/O, but now I think it's actually more appropriate here because it's not a hardware question. I need to output three digital waveforms at a relatively low frequency, 71.9 Hz. I have a PCI DAQ card, the 6024E and am using the NI-DAQmx functions to try to do this. My program basically generates the square wave that I want, and converts it into a digital wave. I do this 3 times for the three separate waves, and then I combine them into an array and send them to my DAQ functions, which are in a while loop so I can get continuous output. My problem is that the waveform that the DAQ is actually outputting is not what I want. It's outputting a wave that has the same duty cycle (approximately) but the frequency is over 2 kilohertz. It's not like this all the time; after it outputs about 7 cycles of this wave, it goes to logic low for a long time, and then repeats itself. When I probe the digital waveform right before it goes into the DAQ functions, it's running correctly at 71.9 Hertz. Am I doing anything wrong with the DAQ functions or the sampling information? Thanks in advance.
    -- Josh Matloff

    Hello Josh,
    I'm pretty sure that the reason that your digital waveforms are not being produced at the correct frequency is because your digital output is not associated with any sort of timing. Unfortunately, with an E series board you can only do software timed digital operations. This means that the frequency at which the values on your digital lines will be updated depends on how fast/often your computer executes the DAQmx Write that is inside of your while loop. If you have an M series board, you can actually correlate the DIO operations with another subsytems clock (AI/AO sample clock, etc.) which means that you can acheive hardware-timed DIO. In the event that you do not have access to an M series board, I think that AnalogKid2DigitalMan was spot on that you would want to use counters to generate pulse trains (that is if your digital waveforms have a constant duty cycle and period). Depending on what the DAQ board is outputting to, you might also want to consider using the Analog Output channels to generate your digital waveform. As long as you continue to use the digital lines on the 6024E, there is not really a way to guarantee the timing of when the digital lines will be updated. You might be able to get close, but you will probably see some "hiccups", especially if your computer needs to service interrupts or give processing time to another application. And lastly, heed geckoee's advice and don't forget to properly close out your tasks! Putting in some error handling may also help in the debugging process.
    Take care,
    E.Lee
    Eric
    DE For Life!

  • Digital waveform to DAQ

    Hi,
    I have generate some digital waveform by reading a text file. the graph that is connected to the waveform is what i wanted. But I need to output this waveform through one line digital output of USB6501. How do i go about doing it?
    Any help is appreciated. Thanks.
    Attachments:
    data.txt ‏1 KB
    test.vi ‏64 KB

    When one looks at the specifications for the USB6501, one notes that it cannot do hardware-timed output.  Therefore, you can't use a waveform datatype to generate output with this card.
    So, you will have to use software timing and a loop.  Since you specify a pretty slow transfer rate (0.5sec), it should work fine.
    Look at one of the examples that ships with LabVIEW to get you started.  Click "Find Examples...Hardware Input and Output...DAQmx...Digital Generation...Write Dig Chan".
    Of course, you only want one line.  So when you specify your physical channel, only specify one line.  Change the function inside the loop to "Single Channel...Single Sample...Boolean (1 line)".  Now the function will accept a single boolean value.
    You do a lot of screwing around with getting your data into the right format.  That can be simplified a lot.  See the attached picture.  This is not complete code -- you will need to look at the example I mentioned -- but this picture and the example, combined, should tell you what you need to know.
    Hope this helps get you started.

  • Keeping Digital Waveform Graph Channel Name constant

    Hello All,
    I have currently run into a problem where LabView decides to change all of the channel names in my waveform graph to some type of default setting, e.g. Line 1, Line 2 etc.  I was wondering is there a possible way to keep the channel names on the digital wave form constant even if I change some of the digital waveform parameters, or pass a null digital waveform constant through one of the channels?  Any help on this would be much appreciated.
    Example:
    Problem
    Digital Channel Name Before:                                 Change Parameter:                              Digital Channel Name After:
    Valve 1                                                                     Only Channel 1&2 used                            Line 1
    Valve 2                                                                                                                                       Line 2
    Valve 3

    Hi di_1,
    Are you trying to add more elements to a property node?  Just grab the bottom and drag it down...check out the pictures.
    Stephen S.
    National Instruments
    1 Test is worth 1000 expert opinions
    Attachments:
    propertynode.png ‏83 KB
    grab the bottom of node.png ‏65 KB
    drag it down for more properties.png ‏96 KB

  • Digital waveform

    Aim of my VI: 1. PLC Digital Outputs are being switched from On and OFF through a relay. I have to read that signal and represent it in the digital waveform within a time period, using NI DAQ 6251.
    2. The data should be represented in real time showing the pulse with X-axis having the time scale.
    3. I have capture all the data and save in an excell file.
    4. With minimum resolution of 1 to 10ms.
    Please see my VI which I made and suggest.
    I have a question, in my VI I have directly plotted the data coming from the digital read. What is the X-axis there?
    Secondly I have used the time stamp to represent the actual time.
    Which graph is correctly satisfying the purpose? Sorry I generally get confused with timing in the loop.
    Attachments:
    Read-PLC-Dig Chan.vi ‏59 KB

    Hi KRAZE4LV,
    The following example demonstrates how to perform a continuous digital read that outputs the data to a graph:
    NI Community Example: Digital - Continuous Input - https://decibel.ni.com/content/docs/DOC-25130
    I would recommend starting with this.  The graph, however, will not scroll as you have described.  To get the behavior you want, you should replace the Digital Waveform Graph with a Waveform Chart.  Here is a guide about the types of charts and graphs available:
    Types of Graphs and Charts in LabVIEW - http://zone.ni.com/reference/en-XX/help/371361H-01/lvconcepts/types_of_graphs_and_charts/
    To get your digital data into this chart, you will need to use the following VI from your Waveform Palette to convert your data to a compatible type:
    Digital to Analog VI - http://zone.ni.com/reference/en-XX/help/371361H-01/lvwave/digital_to_analog_wf/
    You can adjust the chart's history (right-click»Chart History Length...) to configure how many samples are shown at a time.  With this setup, your x-axis will be your computer's timestamps.
    As for your file logging, the following VI performs the file i/o you are requesting:
    Export Waveforms to Spreadsheet File VI - http://zone.ni.com/reference/en-XX/help/371361H-01/lvwave/export_wave_to_spreadsheet/
    Regards,
    Chris E.
    Applications Engineer
    National Instruments
    http://www.ni.com/support

  • Waveform generator timing

    Hello,
       I am trying to control a servo using Labview 8.5.  The servo requires a sqaure wave where the duty cycle determines the position the servo motor moves an extension.  My question has to do with the sampling info parameters.  I was trying to get a duty cycle of 7.5%, so I hooked up my DAQ (NI 6221) to an oscilloscope.  At Fs and #s  1k and duty cycle of 7.5%, the scope said I have a duty cycle of 10%.  At Fs and #s = 4k, I got the scope to read 7.5%.  However, at Fs and #s = 5k, the scope read 8% duty cycle.  I moved up to Fs and #s = 6k and was able to read 7.5% again.  Does the sampling info somehow affect the daq output?  I first thought it just may not be going fast enough, but as you can see going from 4k to 5k produced an error.  I will need to be able to resolve .5% duty cycle changes to control my servo accurately, any help on this would be greatly appreciated!  Attached is a my VI, I use the DAQ output assistant, and tell it to use the waveform timing parameters.
    Thanks
    - J
    Attachments:
    simplewavegeneration.vi ‏101 KB

    Hi J,
    As Lynn has mentioned, your sampling rate has become a product of your settings.  The DAQ Assistant settings you are using is extracting the timing from the waveform created.  I would follow Lynn's suggestion and verify the numbers your using.  Make sure that the sampling rate used (Fs) is something that will equate to you getting the correct duty cycle your looking for.  For example, if you changed Fs to 10KS/s you would see a 0.1ms accuracy.
    I also wanted to mention that you might also just look at using a counter.  A counter output task will allow you to specify a pulse train duty cycle explicitly.  This will make the application a little more automated and easier to deal with.
    Regards,
    Paul C.

  • Digital waveform editor sample size limit?

    Hi,
    Can anybody please tell me the sample size limit of the Digital Waveform Editor? Thanks!
    Jing

    Hello,
    1) You can actually acquire as many points as you want. You may be worried about the throughput of all this data from the DAQ board into computer memory, but I don't think this will be much of a concern for your application. You're limited only by how much memory your computer has. Mainly, you should be concerned about what you are doing with all those samples after they are acquired. Are you just using them once then throwing them away? (Such as the "Cont Acq&Graph Voltage-Int Clk.vi" shipping example.) Or are you streaming them to disk? If you just keep them all in computer memory, then there would be some maximum number of samples you could hold but that number would be system dependant and you'd just have to experiment to find that number.
    2
    ) That's a great idea to take those voltage signals and make them digital inputs. This way you'll also free up some more bandwidth giving you the option to increase the sample rate on your other channels. However, you won't be able to include any DIO channels in the same task with your other analog channels. You need to create a separate task for these digital input channels. Lines 0,1,2, and 4 will be reserved for communication with your SCXI chassis by the way. You also won't be able to do any buffered sampling like you can with the analog channels. The DIO for the PCI-6024E is only immediate and software-timed. (You must poll the status of the line with a software loop.)
    Let me know if you have any other questions.
    Russell
    Applications Engineer
    National Instruments
    http://www.ni.com/support

  • Count pulses in digital waveform

    Hello everybody,
    I need to count the pulses of a digital waveform. I have looked at the examples related to this, but all of them seem to use a signal acquired by a digital counter input. I already have the signal in my computer, so using a device input makes no sense. And I searched the function library but found nothing. Which LabView functions should I use?
    Thank you in advance for your time and help,
    Pablo Concha
    Solved!
    Go to Solution.

    SOmething like this should work for a simple digital wave.
    Tim
    Johnson Controls
    Holland Michigan
    Attachments:
    example.vi ‏14 KB

  • I have Adobe Digital Editions Library and need to transfer some books out of one computer to another?

    I recently got a macbook air and want to transfer some books from my Adobe Digital Edition Library that is on my Apple iMac onto my new Macbook Air. Anyone know how to do this?

    Hi pamilafaye,
    I've moved your question from the Acrobat.com forum to the Adobe Digital Editions forum, as you're more likely to find someone to answer your question here.
    Best,
    Sara

  • I am unable to access my digital editions library on a new computer with my existing account, it shows that my library is empty?

    I am unable to access my digital editions library on a new computer with my existing account, it shows that my library is empty? Can anyone offer a suggestion to fix this?

    If you have given correct info about you ios 6.1.3 - all you need to do is delete account. You will be able to sign in with new one afterwards. Make sure you don't delete any info when you see those prompts.

  • Simultaneous analog and digital waveform read with PXIe-6361 and BNC2120 ?

    Hi there,
    I am trying to collect both analog and digital signals from a PXIe-6361 linked to a BNC2120, using the attached VI. I am running Labview 2011 64bit. This is the first time I am working with digital input. On the 2120 board, I have the digital input BNC cable connected to User Input 1 and wire between the screw terminal of UserInput 1 and the P0.1 (Digtial I/O) screw terminal.
    I have two questions related to this:
    1) When I try to run the VI in its current state, I get the following error:
    Error -89137 occurred at DAQmx Start Task.vi:3
    Possible reason(s): Specified route cannot be satisfied, because it requires resources that are currently in use by another route.
    Property: RefClk.Src
    Source Device: PXI1Slot2
    Source Terminal: PXIe_Clk100
    Required Resources in Use by
    Task Name: _unnamedTask<6>
    Source Device: PXI1Slot2
    Source Terminal: None
    Destination Device: PXI1Slot2
    Destination Terminal: RefClockInternal
    Can anyone point me in the right direction for troubleshooting this?
    2) I would like to combine my regular waveforms and the digital waveform into one array which would then be written to file. I can't figure out how to combine the two different waveform types...can anyone give me a hint on this?
    Thanks for your help,
    Claire.
    Attachments:
    Export Waveforms To Spreadsheet File (1D)_wo extra line.vi ‏33 KB
    Multi-Device Synch-Analog Input-Finite Acq-Analog Start_Claire_wDigitalin.vi ‏105 KB

    Hi ClaireJ,
    Sounds like a reference clock conflict. This KnowledgeBase (KB) talks about this error when using simultaneous sampling. Also, might want to check the device routes in Measurement and Automation Explorer (MAX) as discussed here. Finally, if you are routing your PFI line over a RTSI connection, this error can occur. This KB discusses it.
    As to your second question, this post should help.
    Bill E. | Applications Engineer | National Instruments

Maybe you are looking for

  • Voice Memos playback when not in foreground?

    Can the Voice Memos app be configured to play when it is not in the foreground? By default, if Voice Memos is playing a recording and I press the Home button to get to another app, playback immediately ceases. Thanks.

  • FCGI1031: timed out waiting for response body

    Hello, I can not see the remote computer to the test.php I see logs for host 33.180.164.9 trying to GET /test.php, responder-fastcgi reports: FCGI1031: timed out waiting for response body from c:/program files/oracle/webserver7/https-testnet4/docs/te

  • Select and Cursor doubt

    Dear All, I got a doubt b/n select and cursor. I read in one oracle book that select into clause will actually tries to get the data twice, Whereas the cursor will query only ones. Is this the case in Oracle 10g or both the select and cursor will fet

  • Reason box in TRIP Transaction

    Hi, I am not getting Reason text box when the amount entered for an Expense type exceeds the max amount given for the same expense type in Table V_T706B2. Is there some BADI or note to be implemented for this. Rgds PV

  • What are services in Identity Server ?

    A service is a group of attributes defined under a common name. The attributes define the parameters that the service provides to an organization. For instance, in developing a payroll service, a developer might decide to include attributes that defi