#include "stm32f10x.h"
#include "led.h"
#include "key.h"
#include "usart.h"
#include "al422b.h"
//5510的C10 ====clk,,, C11--OE
//#define CLK5510 PCout(10) // DS0
//#define OE5510 PCout(11)// DS1
#define CLK5510_1 GPIO_SetBits(GPIOC,GPIO_Pin_10) //IO口输出低电平
#define CLK5510_0 GPIO_ResetBits(GPIOC,GPIO_Pin_10) //IO口输出低电平
#define OE5510_1 GPIO_SetBits(GPIOC,GPIO_Pin_11) //IO口输出低电平
#define OE5510_0 GPIO_ResetBits(GPIOC,GPIO_Pin_11) //IO口输出低电平
void TLC5510_Init(void)//初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//?? GPIOF ??
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;//LED0 ? LED1 ?? IO ?
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//??????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);//??? GPIO
}
unsigned char ReadAdc(void)
{
unsigned char i,Voltage;
u16 j;
OE5510_0;
//
// for(i=0; i<3; i++)
// {
CLK5510_1; for(i=0; i<2; i++);
CLK5510_0; for(i=0; i<2; i++) ;
// }
CLK5510_1; for(i=0; i<2; i++);
Voltage=GPIOA->IDR;
//CLK5510_0;
return(Voltage);
}
int main(void)
{
int wvold=0;
u8 valAD=0;
u8 inputvalueA=0;
u8 inputvalueB=0;
u8 inputvalueC=0;
u8 inputvalueE=0;
u32 temp=0;
int i=0;
Delay_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//使能JTAGDisable,即禁用JTAG接口
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart_Config();
// LED_Init();
// KEY_Init();
printf("******************\r\n");
gpioA0A7_Init();
gpioB0B7_Init();
gpioC0C7_Init();
// gpioD0D7_Init();
gpioE0E7_Init();
//AL422B_Init();
//AL422B_ResetALL();
//AL422B_wen_Init(0xFFFF,72-1);//1us计算一次,定时器捕获wen上升沿
TLC5510_Init();
Delay_ms(500);
//运行一条语句,340ns左右,0.34us
while(1)
{
inputvalueA=GPIOA->IDR;
printf("inputA = %d \r\n",inputvalueA);
inputvalueB=GPIOB->IDR;
printf("inputB = %d \r\n",inputvalueB);
inputvalueC=GPIOC->IDR;
printf("inputC = %d \r\n",inputvalueC);
inputvalueE=GPIOE->IDR;
printf("inputE = %d \r\n",inputvalueE);
Delay_ms(500);
printf("**********8888********\r\n");
printf("*************8888*****\r\n");
}
}
//GPIOE->BSRR = (Newdata & 0xff) | ( (~Newdata & 0xff)<<16 );
//
// GPIOA->BSRR = (0x00 & 0xff) | ( (~0x00 & 0xff)<<16 );
// Delay_ms(10);
// GPIOA->BSRR = (0xff & 0xff) | ( (~0xff & 0xff)<<16 );
// Delay_ms(10);
//
// GPIOA->BSRR = (0xf0 & 0xff) | ( (~0xf0 & 0xff)<<16 );
// Delay_ms(10);
//
// GPIOA->BSRR = (0x0f & 0xff) | ( (~0x0f & 0xff)<<16 );
// Delay_ms(20);
//
// Delay_ms(50);
//
// Delay_ms(100);
//
// GPIOA->BSRR = (0xf0 & 0xff) | ( (~0xf0 & 0xff)<<16 );
// Delay_ms(100);
//
// GPIOA->BSRR = (0x0f & 0xff) | ( (~0x0f & 0xff)<<16 );
// Delay_ms(100);
外面的CPLD产生6.25Mhz的采集脉冲,将OE直接接GND。
读取的数据是前三个周期的采样数据,看时序图。