stm32通过SPI与adc124s021通信读取ad
来源:互联网 发布:算法就是程序 编辑:程序博客网 时间:2024/06/14 15:07
/**
* 配置用于操作ADC124S21的模拟SPI GPIO端口
*/
static void U11ADC124S021_GPIO_init()
{
SPI_InitTypeDef SPI_InitStructure; //定义SPI结构体
GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体
//使能SPI1时钟、GPIOA及GPIOC口时钟、引脚复用功能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|
RCC_APB2Periph_GPIOC |
RCC_APB2Periph_AFIO |
RCC_APB2Periph_SPI1,
ENABLE);
/* 配置SPI引脚:NSS,SCK,MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* 配置PA4为推挽输出,作为MAX5415片选引脚 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/**********SPI基本配置****************/
SPI_InitStructure.SPI_Direction= SPI_Direction_2Lines_FullDuplex;//SPI为2线全双工
SPI_InitStructure.SPI_Mode= SPI_Mode_Master; //SPI主模式
SPI_InitStructure.SPI_DataSize= SPI_DataSize_16b; //SPI发送接收16位帧结构
SPI_InitStructure.SPI_CPOL= SPI_CPOL_Low; //时钟空闲时为0
SPI_InitStructure.SPI_CPHA= SPI_CPHA_1Edge; //数据捕获于第一个时钟沿
SPI_InitStructure.SPI_NSS= SPI_NSS_Soft; //内部NSS信号由软件控制
SPI_InitStructure.SPI_BaudRatePrescaler= SPI_BaudRatePrescaler_32;//波特率预分频值为32
SPI_InitStructure.SPI_FirstBit= SPI_FirstBit_MSB; //数据传输从高位开始
SPI_InitStructure.SPI_CRCPolynomial= 7; //CRC值计算的多项式最高为7次
SPI_Init(SPI1,&SPI_InitStructure);//根据以上参数初始化SPI结构体
SPI_Cmd(SPI1,ENABLE); //使能SPI1
}
/********************************************************************************************************
**函数名称:U11_AD_124S021()
**函数功能:用于AD转换,读取成像镜头与天线位置
**输入变量:channel 通道数;channel=1,则选择通道1;channel=2,则选择通道2.
**输出变量:ad_val,AD转换值
********************************************************************************************************/
u32 U11_AD_124S021(unsigned char channel)
{
u16TxData = 0;
if(channel== 1)
TxData= 0x0000;
if(channel== 2)
TxData= 0x0800;
if(channel== 3)
TxData= 0x1000;
if(channel== 4)
TxData= 0x1800;
while((SPI1->SR&1<<1)==0);//等待发送区空
SPI1->DR=TxData; //发送一个byte
while((SPI1->SR&1<<0)==0);//等待接收完一个byte
returnSPI1->DR; //读数据,返回收到的数据
}
- stm32通过SPI与adc124s021通信读取ad
- STM32与FPGA通过SPI通信
- s5pv210与stm32 spi通信
- STM32 spi与FPGA的通信
- STM32之间SPI通信
- STM32 SPI 通信
- STM32 SPI DMA通信
- STM32之SPI通信
- Raspberry pi通过SPI与FPGA通信
- Pixy(Cmucam5)通过SPI与Arduino通信
- 基于STM32与NOR FLASH的SPI通信
- stm32 SPI通信 操作寄存器
- stm32 io模拟spi通信
- STM32通过I2C与BMP280通信
- STM32通过I2C与BMP280通信
- STM32通过DMA采集多通道AD
- STM32通过DMA采集多通道AD
- STM32通过DMA采集多通道AD
- viewpager实现图片轮播+小圆点跟着动
- C++头文件的一些笔记
- SQL_数据库基础试题(培训/已完结)
- 909422229__Mysql查询语句基本用法总结
- 程序猿媳妇儿注意事项
- stm32通过SPI与adc124s021通信读取ad
- POJ 3311 Hie with the Pie(状态压缩DP)
- 13. Roman to Integer
- Ajax-serialize()方法
- HDU 1702 (栈和队列的模拟)
- Openstack Manila源码阅读笔记(一)manilaclient调用过程
- ubuntu安装cuda6.5
- 【家谱】项目开发总结
- QEMU和QEMU-KVM的关系