OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10121|回复: 7

STM32如何控制ADS8341的程序

[复制链接]

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2013-4-15
在线时间
0 小时
发表于 2013-4-15 16:55:51 | 显示全部楼层 |阅读模式

 我需要用STM32的SPI控制ADS8341进行数据采集,但是一直采集不到数据,希望大家帮帮我!谢谢
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "spi.h"
#include "IO.h"
//ADS8341实验
int main(void)

 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 uart_init1(72,9600);   
 while(1)          
 {
  spi_ads8341();
 } 
}

#include <stm32f10x_lib.h>
#include"spi.h"
//SPI口初始化
void SPI2_Init(void)
{
 RCC->APB2ENR|=1<<3;    //PORTB时钟使能
 RCC->APB2ENR|=1<<14;   //SPI2时钟使能
 GPIOB->CRH&=0X000FFFFF;
 GPIOB->CRH|=0XBBB00000;
 GPIOB->ODR|=0X7<<5;
 SPI2->CR1|=0<<10;  //全双工模式
 SPI2->CR1|=1<<9;   //软件nss管理
 SPI2->CR1|=1<<8;  

 SPI2->CR1|=1<<2; //SPI主机
 SPI2->CR1|=0<<11; //8位数据
 SPI2->CR1|=0<<1; //CPOL=0
 SPI2->CR1|=0<<0;  //CPHA=0
 SPI2->CR1|=3<<3;  //Fsck=Fcpu/256
 SPI2->CR1|=0<<7;   //MSBfirst
 SPI2->CR1|=1<<6;    //SPI设备使能
 SPI2_ReadWriteByte(0xff); //启动传输
}
//SPI速度设置函数
void SPI2_SetSpeed(u8 SpeedSet)
{
  SpeedSet&=0x07;
  SPI2->CR1&=0xFFC7;
  SPI2->CR1|=SpeedSet<<3;
  SPI2->CR1|=1<<6;
}
//SPI2读写一个字节
//TxData:要写入的字节
//返回值:要读到的字节
u8 SPI2_ReadWriteByte(u8 TxData)
{
 u16 retry;
 while((SPI2->SR&1<<1)==0)   //等待发送区空
 {
  retry++;
  if(retry>=0xfffe)
   return 0;
 }
 SPI2->DR=TxData;   //发送一个字节
 retry=0;
 while((SPI2->SR&1<<0)==0)       //等待接收完一个字节
 {
  retry++;
  if(retry>=0xfffe)
   return 0;
 }
 return SPI2->DR;     //返回收到的数据

}
void delay1(u16 ms)
{
 u8 i;
  while(ms--)
 {
   for(i = 0; i<250; i++);
 }
}

 
void sendch(u8 t)
{
 USART1->DR=t;
 while((USART1->SR&0X40)==0);
 USART1->SR&=0XFF7F;
 
}    
void spi_ads8341(void)
{
 u8 a1,a2,a3,a4,a5;
 a1=0x00;
 a2=0x00;
 a3=0x00;
 a4=0x00;
 a5=0x00;
 SPI_ADS_CS=0;
 SPI2_Init();      //初始化SPI
 SPI2_SetSpeed(SPI_SPEED_4);//设置为18M时钟,高速模式
 SPI2_ReadWriteByte(0x94);
 a1=SPI2_ReadWriteByte(0x00);     
 a2=SPI2_ReadWriteByte(0x00);     
 a3=SPI2_ReadWriteByte(0x00);
 a4=SPI2_ReadWriteByte(0xff);     
 a5=SPI2_ReadWriteByte(0xff); 
    SPI_ADS_CS=1;
 sendch(a1);
 sendch(a2);
 sendch(a3);
 sendch(a4);
 sendch(a5);
 delay1(5000);
}     

#ifndef __SPI_H
#define __SPI_H
#include "sys.h"
//IO的定义
#define SPI_ADS_CS PAout(1)  //选中ADS8341 
//SPI总线速度设置
#define SPI_SPEED_2       0
#define SPI_SPEED_4       1
#define SPI_SPEED_8       2
#define SPI_SPEED_16      3
#define SPI_SPEED_32      4
#define SPI_SPEED_64      5
#define SPI_SPEED_128     6
#define SPI_SPEED_256     7
void SPI2_Init(void);
void SPI2_SetSpeed(u8 SpeedSet);
u8 SPI2_ReadWriteByte(u8 TxData);
void delay1(u16 ms);
void sendch(u8 t);
void spi_ads8341(void);
void SPI_ADS_Init(void);
#endif

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-15 18:51:43 | 显示全部楼层
这个AD8341没玩过,看看数据手册了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2013-4-15
在线时间
0 小时
 楼主| 发表于 2013-4-15 18:56:56 | 显示全部楼层
ADS8341是A/D转换芯片,我可以发资料给你
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2013-4-15
在线时间
0 小时
 楼主| 发表于 2013-4-15 18:59:02 | 显示全部楼层
我的资料
谢谢

ads8341时序图.jpg

ADS834111.pdf

371.62 KB, 下载次数: 1061

回复 支持 反对

使用道具 举报

17

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2012-10-8
在线时间
8 小时
发表于 2013-4-15 22:43:51 | 显示全部楼层
ADS8341 是16位AD,转换速度不错,我和楼主一样一直也弄不错,等原子来帮帮看,,
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-4-9
在线时间
3 小时
发表于 2014-4-9 11:19:51 | 显示全部楼层
回复【4楼】helen:
---------------------------------
大哥  请问你的这个问题解决了没有啊   我也遇到了相关的问题了  
希望可以得到你的帮助,谢谢大哥   我的qq764081464
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2014-4-9
在线时间
3 小时
发表于 2014-4-9 11:20:11 | 显示全部楼层
回复【5楼】pc8mcu:
---------------------------------
大哥  请问你的这个问题解决了没有啊   我也遇到了相关的问题了   
希望可以得到你的帮助,谢谢大哥   我的qq764081464
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2020-8-19
在线时间
56 小时
发表于 2020-10-27 14:48:31 | 显示全部楼层
读取的模拟量转换成数字量最大只能为32767,求顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 16:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表