#include <stdio.h>
//#include "xspi_l.h"
#include "xparameters.h"
#include "xspi.h"
#define SPI_DEVICE_ID XPAR_AXI_SPI_0_DEVICE_ID
static XSpi axi_spi_0;
void print(char *str);
/*********************** All Functions Definitions ********************/
/*
* spi_init function: to initialize SPI device before transfer data. Trigger on rising edge of SCLK
*/
void spi_init(void)
{
XStatus status = XST_SUCCESS;
status = XSpi_Initialize(&axi_spi_0, SPI_DEVICE_ID);
switch(status)
{
case XST_SUCCESS: xil_printf("Status: The device is initialized successfully!\n\r"); break;
case XST_DEVICE_IS_STARTED: xil_printf("Status: The device is started!\n\r"); break;
case XST_DEVICE_NOT_FOUND: xil_printf("Status: The device was not found in the configuration such that initialization could not be accomplished!\n\r"); break;
}
Xuint32 options = XSP_MASTER_OPTION | XSP_MANUAL_SSELECT_OPTION; // There is no burr when SS is in LOW LEVEL.
status = XSpi_SetOptions(&axi_spi_0, options);
switch(status)
{
case XST_SUCCESS: xil_printf("Status: Options are successfully set!\n\r"); break;
case XST_DEVICE_BUSY: xil_printf("Status: The device is currently transferring data!\n\r"); break;
case XST_SPI_SLAVE_ONLY: xil_printf("Status: It is a slave-only device !\n\r"); break;
}
XSpi_SetSlaveSelect(&axi_spi_0, SPI_DEVICE_ID); // Set Slave Select Bit manually.
XSpi_Start(&axi_spi_0); // Start the SPI driver so that the device is enabled.
XSpi_IntrGlobalDisable(&axi_spi_0);
}
void spi_config()
{
/* Define variable */
Xuint8 i=0;
XStatus status = XST_SUCCESS;
//lmk0431 trigger at the raise edge, 32 bits instruction(including address and data)
Xuint32 LMK0431_cfg_data[18]={ 0x00000017,
0x00000007,
0x01030200,
0x01230201,
0x01030402,
0x01230403,
0x01030204,
0x00000005,
0x08000076,
0x00000007,
0x00000008,
0x00A22A09,
0x0150000A,
0x0065000B,
0x0000000C,
0x0A35487D,
0x026D001E,
0x1D40008F};
/* Initialize SPI Device. */
xil_printf("SPI Configuration Program starts!\n\r");
/* Configure LMK0431 */
XSpi_SetSlaveSelect(&axi_spi_0,1); // Set Slave Select Bit manually.
for(i=0; i<18; i++)
{
status = XSpi_Transfer(&axi_spi_0, &LMK0431_cfg_data[i], NULL, 4);
}
switch(status)
{
case XST_SUCCESS: xil_printf("configure LMK0431 successfully!\n\r"); break;
case XST_DEVICE_IS_STOPPED: xil_printf("Status: The device is stopped!\n\r"); break;
case XST_DEVICE_BUSY: xil_printf("Status: The device is busy!\n\r"); break;
case XST_SPI_NO_SLAVE: xil_printf("Status: No slave was selected!\n\r"); break;
}
}
int main()
{
spi_init();
spi_config();
/*XSpi_WriteReg(0x80014000, 0x70, 0xFFFFFFFE);
XSpi_WriteReg(0x80014000, 0x68, 0x00000017);
XSpi_WriteReg(0x80014000, 0x68, 0x00000007);
XSpi_WriteReg(0x80014000, 0x68, 0x01030200);
XSpi_WriteReg(0x80014000, 0x68, 0x01230201);
XSpi_WriteReg(0x80014000, 0x68, 0x01030402);
XSpi_WriteReg(0x80014000, 0x68, 0x01230403);
XSpi_WriteReg(0x80014000, 0x68, 0x01030204);
XSpi_WriteReg(0x80014000, 0x68, 0x00000005);
XSpi_WriteReg(0x80014000, 0x68, 0x08000076);
XSpi_WriteReg(0x80014000, 0x68, 0x00000007);
XSpi_WriteReg(0x80014000, 0x68, 0x00000008);
XSpi_WriteReg(0x80014000, 0x68, 0x00A22A09);
XSpi_WriteReg(0x80014000, 0x68, 0x0150000A);
XSpi_WriteReg(0x80014000, 0x68, 0x0065000B);
XSpi_WriteReg(0x80014000, 0x68, 0x0000000C);
XSpi_WriteReg(0x80014000, 0x68, 0x0A35487D);
XSpi_WriteReg(0x80014000, 0x68, 0x026D001E);
XSpi_WriteReg(0x80014000, 0x68, 0x1D40008F);*/
return 0;
}
UART.rar_rffc2071
版权申诉
39 浏览量
2022-09-19
19:42:51
上传
评论
收藏 2KB RAR 举报
四散
- 粉丝: 49
- 资源: 1万+
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈