vagina 发表于 2018-10-22 18:36:02

stm32f103c8t6不能读取ltc2400的数据

#include <string.h>
//B5片选
//B6数据
//B7时钟
#include "APP.h"
#include "BSP.h"
#include "BSP_tim.h"
#include "HW_Config.h"
#define SCK_L                GPIO_ResetBits(GPIOB, GPIO_Pin_7)
#define SCK_H                GPIO_SetBits(GPIOB, GPIO_Pin_7)
#define GETSDO                GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)
#define CS_L                        GPIO_ResetBits(GPIOB, GPIO_Pin_5)
#define CS_H                        GPIO_SetBits(GPIOB, GPIO_Pin_5)

int VInit( void )
{
      GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
      GPIO_InitStructure.GPIO_Mode         =GPIO_Mode_IN_FLOATING;
      GPIO_InitStructure.GPIO_Pin= GPIO_Pin_6;
      GPIO_Init(GPIOB, &GPIO_InitStructure);
      
GPIO_InitStructure.GPIO_Speed   = GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode         = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_7;
      GPIO_Init(GPIOB, &GPIO_InitStructure);
      return 0;
}
int main(void)
{
    uint32_t count = 0;
    uint32_t len = 0;
                uint8_t a=0,b=0,c=0,d=0;
    USB_Config();
                VInit();
                USB_TxWrite("initdone", 8);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                USB_TxWrite("yanshi", 6);
zh:      len=0;
                CS_H;
                SCK_L;
                CS_L;
                for(count=0;count<32;count++)
                {
                        len<<=1;
                        SCK_H;
                        len|=GETSDO;
                        SCK_L;
                }
                CS_H;
                a=(len&&0xFF000000)>>24;
                b=(len&&0xFF0000)>>16;
                c=(len&&0xFF00)>>8;
                d=(len&&0xFF)>>0;
                print8(a);
                USB_TxWrite("", 2);
                print8(b);
                USB_TxWrite("", 2);
                print8(c);
                USB_TxWrite("", 2);
                print8(d);
                USB_TxWrite("", 2);
                USB_TxWrite("\r\n", 2);
               
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                for(count=0;count<60000;count++);
                goto zh;      
}


vagina 发表于 2018-10-22 18:40:49

USB部分用了网上的代码 直接在usb接口输出数据
我把adc的FO接到vcc了 鄙视这论坛没有图片上传功能 还要搞啥图床 我把头像改成ltc2400框图了大家可以看下

vagina 发表于 2018-10-22 18:43:46

输出是
00000000000000000000000000000001
00000000000000000000000000000001
00000000000000000000000000000001
00000000000000000000000000000001
无限循环 模拟输入接基准输出或者地都不会变

vagina 发表于 2018-10-22 18:56:23

补一下将字节以二进制打印的print8函数
int printf8(uint8_t jiba)
{
        int daa;
        for(daa=7;daa>=0;daa--)
        {
        if((jiba>>daa))
                USB_TxWrite("1", 1);
        else
                USB_TxWrite("0", 1);
        }
        return 0;
}

vagina 发表于 2018-10-22 21:28:23

这个代码有很多错误,已改好,能获取数据了,不过数据有很大问题正在修正
页: [1]
查看完整版本: stm32f103c8t6不能读取ltc2400的数据