基于stm32的ad7793的例程
更新时间:2024-02-02 07:11:01 阅读量: 教育文库 文档下载
基于stm32的ad7793的例程 void Delay(u32 i)\\\\延时函数 { while(i--); }
void AD7793_CS_SET()//CS置一 { GPIO_SetBits(GPIOA,GPIO_Pin_4); }
void AD7793_CS_CLR()//CS置零 { GPIO_ResetBits(GPIOA,GPIO_Pin_4); }
void AD7793_SCLK_SET() { GPIO_SetBits(GPIOA,GPIO_Pin_5); }
void AD7793_SCLK_CLR() { GPIO_ResetBits(GPIOA,GPIO_Pin_5); }
void AD7793_DIN_SET() { GPIO_SetBits(GPIOA,GPIO_Pin_6); }
void AD7793_DIN_CLR() { GPIO_ResetBits(GPIOA,GPIO_Pin_6); }
void AD7793_DOUT_SET() { GPIO_SetBits(GPIOA,GPIO_Pin_7); }
u8 AD7793_DOUT_GET() { u8 i; i=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7); return i; }
void AD7793_GPIO_Config(void)//GPIO口设置 { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //将PA7口设置为DOUT
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 ; //PA456分别设置为CS、CLK、DIN GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); AD7793_CS_SET(); }
void WriteToReg(unsigned char ByteData) //向AD7793写入一个字节 { unsigned char temp; unsigned char i; AD7793_CS_CLR(); temp=0x80; for(i=0;i<8;i++) { if((temp & ByteData)==0) { AD7793_DIN_CLR(); } else { AD7793_DIN_SET(); } AD7793_SCLK_CLR(); Delay(200); AD7793_SCLK_SET(); Delay(200); temp=temp>>1; } AD7793_CS_SET(); }
void AD7793_Reset(void) //AD7793复位 { unsigned int ResetTime; ResetTime=32; AD7793_SCLK_SET(); AD7793_CS_CLR(); AD7793_DIN_SET(); while(ResetTime--) {
}
WriteToReg(0xff); Delay(100); AD7793_SCLK_CLR(); Delay(100); AD7793_SCLK_SET(); }
AD7793_CS_SET();
unsigned char AD7793_ReadStatusRegister(void) //读取7793的状态寄存器 { unsigned char j; unsigned char temp; WriteToReg(0x40); AD7793_DIN_SET(); AD7793_CS_CLR(); temp=0; AD7793_DOUT_SET(); for(j=0; j<8; j++) { AD7793_SCLK_CLR(); AD7793_DOUT_SET(); if(AD7793_DOUT_GET()==0) { temp=temp<<1; } else { temp=temp<<1; temp=temp+0x01; } Delay(200); AD7793_SCLK_SET(); Delay(200); } AD7793_CS_SET(); return temp; }
void Ad7793_WriteModeRegister(unsigned char ModeRegisterH,unsigned char ModeRegisterL)//配置模式寄存器 { WriteToReg(0x08); WriteToReg(ModeRegisterH); WriteToReg(ModeRegisterL); }
void Ad7793_WriteConfigRegister(unsigned char ConfigRegisterH,unsigned char
ConfigRegisterL)//配置配置寄存器 { WriteToReg(0x10); WriteToReg(ConfigRegisterH); WriteToReg(ConfigRegisterL); }
void Ad7793_WriteIORegister(unsigned char IORegister)//配置IO寄存器 { WriteToReg(0x28); WriteToReg(IORegister); }
long AD7793_ReadDataRegister(void) { union { unsigned char chardata[4]; unsigned long longdata; }AD7793Result; unsigned char i,j; unsigned char temp; temp=AD7793_ReadStatusRegister(); while((temp&0x80)==0x80) { temp=AD7793_ReadStatusRegister(); } WriteToReg(0x58); AD7793_DIN_SET(); AD7793_CS_CLR(); AD7793_DOUT_SET(); for(i=0; i<3; i++) { for(j=0; j<8; j++) { AD7793_SCLK_CLR(); AD7793_DOUT_SET(); if(AD7793_DOUT_GET()==0) { temp=temp<<1; }else { temp=temp<<1; temp=temp+0x01;
}
} Delay(200); AD7793_SCLK_SET(); Delay(200); } AD7793Result.chardata[3-i]=temp; }
AD7793_CS_SET();
AD7793Result.longdata=AD7793Result.longdata>>8; return AD7793Result.longdata;
void Init_AD7793(void)//AD7793的初始化 { AD7793_GPIO_Config(); AD7793_Reset(); Ad7793_WriteModeRegister(0x00,0x0a); Ad7793_WriteConfigRegister(0x10,0x00); Ad7793_WriteIORegister(0x03); }
void AD7793_EXTIX_Init(void)//中断程序,当DOUT有数据输出时,DOUT变为低电平,此时触发中断程序,读取AD7793的数据寄存器 { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource7);
EXTI_InitStructure.EXTI_Line=EXTI_Line7;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void EXTI9_5_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line7) != RESET) send_PC_7793data(); Init_AD7793(); LED_Init(); EXTI_ClearITPendingBit(EXTI_Line7); }
正在阅读:
基于stm32的ad7793的例程02-02
仪器分析题库04-30
成长中那些与母亲有关的记忆碎片11-03
缅甸市场情况分析 - 图文02-27
access题库答案06-29
各品牌的汽车车尾的英文名称05-25
商场广告位管理(规定)11-29
高三化学复习:拓展精练5009-29
杨凡老师:标杆房企成本精细化管理体系构建与核心关键点控制及BIM的运用09-29
油菜科学施肥技术指导意见06-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 基于
- ad7793
- stm32
- 人教版六年级数学上册《圆的周长》观课评课记录
- 文秘管理与应用写作形考作业答案
- 2013新人教版小学二年级数学上册乘法的初步认识教案
- 加热炉安全评价报告 - 图文
- 安全生产知识试题题库(综合)
- 2015五家巷小学清明节祭扫烈士墓活动总结
- 聚合物合成工艺学试题无答案期中测验1
- 7月份工作总结 - 图文
- 财务管理完整版 - 图文
- 政府采购测试题答案(第一期)
- 2012年全国大纲版高考语文试题word版(含答案)
- 信托合同案例
- 市委组织部年度考核先进科室、优秀个人评选办法
- 实验十三吸收塔的操作及吸收传质系数的测定 - 图文
- 2011年4月自学考试工商行政管理学概论试题
- 家庭常备药品清单,使用常识及储藏知识 - 图文
- 实变函数复习资料
- 国际经济学英文版选择题
- ZPLII命令参考
- 浪涛公司、三九企业案例讨论分析