Jump to content

suung33

Members
  • Posts

    3
  • Joined

  • Last visited

suung33's Achievements

Newbie

Newbie (1/4)

0

Reputation

  1. Hello. I'd like to measure the time spent on the repeat statement of Vitis. I wrote the code as shown in the attached picture, but the Vitis Serial Terminal is printed as 0. How can I solve this problem? Thanks.
  2. Hi. I would like to ask about how to use mcp4725 on the zybo board. I want to obtain analog voltage by connecting SDA and SCL signals from MIO14 and 15 of Zybo z7-10 to mcp4725. For this purpose, I wrote the code by referring to 'xiicps_polled_master_example.c', which is an example provided by Xilinx. When I measured the voltage using an oscilloscope, I could see that the Vout of the mcp4725 changed for a while, but I couldn't get the constant value I wanted. How can I control the Vout of the mcp4725? I will attach the code and the photo. Thank you. ps) Like connecting mcp4725 to Arduino, Can I use the driver provided by adafruit in Vitis? ///////////////////////////////////////////////////////////////////////////////////////////////// /****************************************************************************** * Copyright (C) 2010 - 2021 Xilinx, Inc. All rights reserved. * SPDX-License-Identifier: MIT ******************************************************************************/ /*****************************************************************************/ /** * @file xiicps_polled_master_example.c * * A design example of using the device in polled mode as master. * * The example uses buffer size 132. Please set the send buffer of the * Aardvark device to be continuous 64 bytes from 0x00 to 0x3F. * * <pre> MODIFICATION HISTORY: * * Ver Who Date Changes * ----- --- -------- ----------------------------------------------- * 1.00a jz 01/30/10 First release * * </pre> * ****************************************************************************/ /***************************** Include Files **********************************/ #include "xparameters.h" #include "xiicps.h" #include "xil_printf.h" /************************** Constant Definitions ******************************/ /* * The following constants map to the XPAR parameters created in the * xparameters.h file. They are defined here such that a user can easily * change all the needed parameters in one place. */ #define IIC_DEVICE_ID XPAR_XIICPS_0_DEVICE_ID /* * The slave address to send to and receive from. */ #define IIC_SLAVE_ADDR 0x62 // default address of mcp4725 #define IIC_SCLK_RATE 100000 /* * The following constant controls the length of the buffers to be sent * and received with the IIC. */ //#define TEST_BUFFER_SIZE 132 #define TEST_BUFFER_SIZE 132 // Do I have to change this value?? /**************************** Type Definitions ********************************/ /************************** Function Prototypes *******************************/ int IicPsMasterPolledExample(u16 DeviceId); /************************** Variable Definitions ******************************/ XIicPs Iic; /**< Instance of the IIC Device */ /* * The following buffers are used in this example to send and receive data * with the IIC. */ u8 SendBuffer[TEST_BUFFER_SIZE]; /**< Buffer for Transmitting Data */ u8 RecvBuffer[TEST_BUFFER_SIZE]; /**< Buffer for Receiving Data */ /******************************************************************************/ /** * * Main function to call the polled master example. * * * @return XST_SUCCESS if successful, XST_FAILURE if unsuccessful. * * @note None. * *******************************************************************************/ int main(void) { int Status; xil_printf("IIC Master Polled Example Test \r\n"); /* * Run the Iic polled example in master mode, specify the Device * ID that is specified in xparameters.h. */ Status = IicPsMasterPolledExample(IIC_DEVICE_ID); if (Status != XST_SUCCESS) { xil_printf("IIC Master Polled Example Test Failed\r\n"); return XST_FAILURE; } xil_printf("Successfully ran IIC Master Polled Example Test\r\n"); return XST_SUCCESS; } /*****************************************************************************/ /** * * This function sends data and expects to receive data from slave as modular * of 64. * * This function uses interrupt-driven mode of the device. * * @param DeviceId is the Device ID of the IicPs Device and is the * XPAR_<IICPS_instance>_DEVICE_ID value from xparameters.h * * @return XST_SUCCESS if successful, otherwise XST_FAILURE. * * @note None. * *******************************************************************************/ int IicPsMasterPolledExample(u16 DeviceId) { int Status; XIicPs_Config *Config; int Index; /* * Initialize the IIC driver so that it's ready to use * Look up the configuration in the config table, * then initialize it. */ Config = XIicPs_LookupConfig(DeviceId); if (NULL == Config) { return XST_FAILURE; } Status = XIicPs_CfgInitialize(&Iic, Config, Config->BaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Perform a self-test to ensure that the hardware was built correctly. */ Status = XIicPs_SelfTest(&Iic); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Set the IIC serial clock rate. */ XIicPs_SetSClk(&Iic, IIC_SCLK_RATE); /* * Initialize the send buffer bytes with a pattern to send and the * the receive buffer bytes to zero to allow the receive data to be * verified. */ for (Index = 0; Index < TEST_BUFFER_SIZE; Index++) { SendBuffer[Index] = (Index % TEST_BUFFER_SIZE); RecvBuffer[Index] = 0; } /* * Send the buffer using the IIC and ignore the number of bytes sent * as the return value since we are using it in interrupt mode. */ Status = XIicPs_MasterSendPolled(&Iic, SendBuffer, TEST_BUFFER_SIZE, IIC_SLAVE_ADDR); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Wait until bus is idle to start another transfer. */ while (XIicPs_BusIsBusy(&Iic)) { /* NOP */ } Status = XIicPs_MasterRecvPolled(&Iic, RecvBuffer, TEST_BUFFER_SIZE, IIC_SLAVE_ADDR); if (Status != XST_SUCCESS) { return XST_FAILURE; } return XST_SUCCESS; }
  3. suung33

    zybo z7-10 I2C master

    Hello, I'm a student studying about FPGA. I want to get an analog signal by processing the digital signal output from the zybo through the i2c. (I will use tca9548a and mcp4725 for DAC) To do this, I want to make sure that there is a digital signal from zybo-z7 through i2c. I made a block design using Axi_iic IP, and set the SCL to JE1(V12) and the SDA to JE2(W16) through the constraints file. After that, I ran the ‘xiic_selfftest_example.c’ code through Vitis. After connecting jumper wires to JE1 and JE2, the oscilloscope measured the voltage and found that both(SCL, SDA) output 3.3V. However, there is no change from 3.3V (High) to 0V (Low). I know that i2c communication starts when SDA becomes low, but the project I designed is not. Q1) Is i2c communication not started because the i2c slave device(ex. tca9548a) is not connected to zybo? If this is correct, how do I specify the Slave address? (Is it designated by the C code in vitis?) Q2) Do I need to run code other than " xiic_selfftest_example.c " to start i2c communication? (Is there an example code to start i2c communication?) Q3) I designed using only block design, but is it necessary to create a separate Verilog code for i2c communication? Q4) I set the pull-up resistance on the FPGA through the constraints file, is this not enough? (Do I have to connect a separate resistance?) Can this be the reason that output is not a digital signal? Ps: I purchased a Pmod (Pmod AD2, Pmod CMPS2) using i2c bus to learn i2c communication. Can I understand i2c communication by practicing how to use these pmod? I am attaching the Block design, constraints code, and oscilloscope measurement results of JE1(SCL) pin. Thanks.
×
×
  • Create New...