OpenEdv-开源电子网

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

STM32F103 SPI读取ID异常

[复制链接]

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-8-9 15:40:46 | 显示全部楼层 |阅读模式

#define SCS  PCout(0) 
#define SCL  PCout(1) 
#define SDA  PCout(2) 
#define sdo  PCin(3)

void LCD_Init(void)
{
u16 id;
  RCC->APB2ENR|=1<<3;//先使能外设PORTB时钟
  RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟

 RCC->APB2ENR|=1<<0;    //开启辅助时钟
 JTAG_Set(SWD_ENABLE);  //开启SWD
           
  
 GPIOC->CRH&=0XFFFFFF00;
 GPIOC->CRH|=0X00000033;

 GPIOC->CRL&=0X000F0000;
 GPIOC->CRL|=0X33308333; 
 GPIOC->ODR|=0X03eF;   //0,1,2
 //PORTB 推挽输出  
 GPIOB->CRH=0X33333333;
 GPIOB->CRL=0X33333333;  
 GPIOB->ODR=0XFFFF;        
 delay_ms(50); // delay 50 ms
 
 DeviceCode = LCD_ReadReg(0x00B0);  
 
}     


void spi_write_command(u8 num)   
{    
 SCS=0;
       u8 count=0;

       SDA=0;
       SCL=0;     
       SCL=1;

 
 for(count=0;count<8;count++) 
 {   
  if(num&0x80)SDA=1; 
  else SDA=0;  
  num<<=1;   
  SCL=0;//
  SCL=1;     
 }
 
  SCS=1;       
}


u16 LCD_ReadReg(u8 CMD)
{            
 u8 count=0;   
 u16 Num=0;
 SCL=0;// 
 SCS=0; // 
 spi_write_command(CMD);//发送命令字
 delay_us(6);//ADS7846的转换时间最长为6us
 SCL=1;//给1个时钟,清除BUSY       
 SCL=0;  
 for(count=0;count<16;count++) 
 {      
  Num<<=1;  
  SCL=0;//下降沿有效          
  SCL=1;
  if(sdo)Num++;   
 } 
 SCS=1;
  
 return(Num);  
   
 

 

}

读的全是0XFF;


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

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-4-15
在线时间
0 小时
 楼主| 发表于 2012-8-9 15:45:16 | 显示全部楼层
用51单片机是可以读出ID的,读0XB0数值为28;
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-9 16:04:44 | 显示全部楼层
你的是什么LCD啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-4-15
在线时间
0 小时
 楼主| 发表于 2012-8-9 16:25:02 | 显示全部楼层
这个是MIPI转接的一个IC,SSD2805,测试MIPI COMMAND模式的时候,我用STM32 并口16位读SSD2805的ID,0xB0地址为0X2805;
测试MIPI VIDEO,用STM32 SPI读SSD2805的0XB0地址,应该读出0X28或者0X25才对,但是读的数值是0XFF;
我用了PC0,PC1,PC2,PC3接的SPI,PC3接SDO来读的,像51单片机读之前这个脚先置1,不知道STM32设置了PC3=0X8输入,读的
数值怎么还是0XFF,请指导下,谢谢。
回复 支持 反对

使用道具 举报

5

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2012-4-15
在线时间
0 小时
 楼主| 发表于 2012-8-9 16:27:22 | 显示全部楼层
LCD的IC是HX8369A,480*800
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-9 18:31:46 | 显示全部楼层
回复【4楼】promcu:
---------------------------------
这个就不好说了.
只能慢慢调啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 06:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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