完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32F4与AD7663通信,无论采用CPU自带的SPI口还是自己用普通IO口去读AD7663的数据,读出的结果都是0。采用AD7663的BUSY下降沿作为中断,可正常进入中断。用普通IO口模拟的时钟时序没问题。电路图和部分程序如下,求大神指教。
电路: 部分程序: 1、AD7663初始化 //连接AD7663的IO口初始化 无效的 AD7663_IO_Init( 无效) { GPIO_InitTypeDef GPIO_Init结构; RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE ); //使能GPIOA时钟 RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOB, ENABLE ); //使能GPIOB时钟 RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOE, ENABLE ); //使能GPIOE时钟 //pb10-sck GPIO_Intistestructure.GPIO_Pin = GPIO_Pin_10; GPIO_Intistructure.GPIO_Pin = GPIO_Pin_10; GPIO_Intistructure.GPIO_Pin = GPIO_Pin =GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_Init结构.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init( GPIOB, GPIO_InitStructure ); //PB14——MISO,AD数据输出 GPIO_Intiste Struitrationre.GPIO_Pin = GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入 GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//开漏输出 GPIO_Init结构.GPIO_Speed = GPIO_Speed_100MHz; GPIO_ Init结构.GPIO_PuPd = GPIO_PuPd_NOPULL;/ GPIO_Init( GPIOB, GPIO_InitStructure ); //pa10-Busy GPIO_ Init结构.GPIO_Pin = GPIO_Pin_10;//PA10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//开漏输出 GPIO_ Init结构.GPIO_Speed = GPIO_Speed_100MHz;// 100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init( GPIOA, GPIO_InitStructure ); //初始化 //PE5——START,为低时启动ADC GPIO_ Init结构.GPIO_Pin = GPIO_Pin_5;//PE5 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_ Init结构.GPIO_Speed = GPIO_Speed_100MHz;// 100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//上拉 GPIO_Init( GPIOE, GPIO_InitStructure ); //初始化 AD7663_PIN_裁武条约=1; ad7663_sck_high; 延时( 50) ; } 2、外部中断服务函数 //外部中断服务程序 //读取采集得到的数据并串口发出 无效的 EXTI15_10_IRQHandler( 撤销) { ad7663_stop () ; ad7663_readcdata () ; EXTI_ClearITPendingBit(EXTI_Line10); //清除LINE10上的中断标志位 } 3、读取AD7663数据 //阅读数据 无效的 AD7663_ ReadADCdata( 无效) // { uint8_t inByte[8];//4个通道,每通道2个字节 英特8_t i = 0; 金特8_t j = 0; 金特16_t tmp_data = 0; 金特16_t; for( i = 0; i < 8; i++ ) { { { 在Byte = 100; 时 时 for( j = 0; j < 4; j++ ) //读4个通道 { { { for( i = 0; i < 16; i++ ) //读每个点 { { { ad7663_sck_high; t = 1000; 时间( t - - ) ; mp_data = AD7663_PIN_DATA; tmp_data <<= 1; ad7663_sck_low; t = 1000; 时间( t - - ) ; 时 时 printf( "%drn", tmp_data ); mp_data = 0; mp_data = 0; mp_data = 0; mp_data = 0; mp_data = 0; mp_data = 0; mp_data = 0; 时 时 } 就是在这个程序中,串口打印的tmp_data一直为0!!! 求助~ |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
电路小知识 | 电源选型要点、电路图的解读方法、LED及其应用示例
198 浏览 0 评论
1031 浏览 0 评论
913 浏览 1 评论
831 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
696 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 18:11 , Processed in 0.651086 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号