OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 871|回复: 5

求助原子哥,这个还是没懂,不知道哪里错了(gm8142模块)

[复制链接]

  离线 

4

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
44
金钱
44
注册时间
2014-8-1
在线时间
0 小时
发表于 2014-8-3 22:20:48 | 显示全部楼层 |阅读模式
5金钱
[C] 纯文本查看 复制代码
#include<stc12c5a.h>
#define BYTE unsigned char 
#define WORD unsigned int 
#define HIGH	1
#define LOW		0
#define FALSE	0
#define TRUE	1


sbit SCLK=P1^7;
sbit DIN=P1^5;
sbit DOUT=P1^6;


void ClrCS(void)
{P14=0;}
void SetCS(void)
{P14=1;}
void Delay(unsigned int nTime)
{
	while(--nTime) {;}
}  
/***********************************************************
 Function:	Delay
 Describe:	Time delay
 Input:		Byte formated time
 Output:	void
***********************************************************/

/***********************************************************
 Function:	SPI_Initial
 Describe:	Initialize the SPI interface
 Input:		void
 Output:	void
***********************************************************/
void SPI_Initial(void)
{
	SCLK = LOW;
	DIN = LOW;
	DOUT = LOW;
	Delay(5);
}

/***********************************************************
 Function:	SPI_Transmit
 Describe:	Send and receive 16-bit data from the SPI interface
 Input:		16-bit data to be send
 Output:	16-bit data of read, user analyse the validity
***********************************************************/
WORD SPITransmit(WORD wSendData)
{
	BYTE i;
	WORD wReadData;
	
	wReadData = 0;
	
	for(i = 0; i < 16; i++)
	{
		if(wSendData & 0x8000)
			DIN = 1;
		else
			DIN = 0;
		wReadData<<=1;			//Shift first, then fill the bit
		SCLK = HIGH;
		wSendData<<= 1;
		wReadData |= DOUT;		//Receive the 16-bit data
		Delay(5);
		SCLK = LOW;
		Delay(5);		//Can be comment by acture use
	}
	return(wReadData);
}

unsigned int SendTo814X(unsigned char chigh,unsigned char clow)	
{
	unsigned int cTempHigh,cTempLow;
	unsigned int RevData;
	
	ClrCS();    //置814x片选有效
	Delay(10);         //延时时间参考814x数据手册的要求     
	cTempHigh=SPITransmit(chigh);      //向814X发送高位数据
	cTempLow=SPITransmit(clow);        //向814X发送低位数据
	Delay(10);		//延时时间参考814x数据手册的要求 		
	SetCS();    //置814x片选无效
	RevData=cTempHigh<<8|cTempLow;
	return RevData;      //返回从814x读出的数据
}
unsigned int Write814xConfig(unsigned char n,unsigned char high,unsigned char low)   //n 表示设置的串口号,high表示给配置寄存器的高位字节(低三位有效),low表示给配置寄存器的低位字节
{
	unsigned char ch;
	unsigned int RevData;
	
	high=high&0x07;
	ch= 0xc0 | (n<< 3);
	high=high|ch;	
	RevData=SendTo814X(high,low);   //向指定的串口功能设置寄存器写配置
	Delay(5);
	return RevData;
}
unsigned int SendToAllCom(unsigned char c,bit Pt)   //c为需要发送的数据,Pt为第九位数据
{
	unsigned char ch;
	unsigned int RevData;

	if(Pt)
		ch=0xa1;
	else
		ch=0xa0;
	RevData=SendTo814X(ch,c);    
	return RevData;      //向所有串口发送数据并读出接收FIFO数据
}
void main()
{
	Write814xConfig(1,0xc0,0xaa);
	//SendToAllCom(0xaa,0);
	
	
	
}

SX-UART-KB资料.zip

943.04 KB, 下载次数: 164

回复

使用道具 举报

  离线 

4

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
44
金钱
44
注册时间
2014-8-1
在线时间
0 小时
 楼主| 发表于 2014-8-3 22:27:01 | 显示全部楼层
[C] 纯文本查看 复制代码
#include<stc12c5a.h>
#define BYTE unsigned char 
#define WORD unsigned int 
#define HIGH	1
#define LOW		0
#define FALSE	0
#define TRUE	1


sbit SCLK=P1^7;
sbit DIN=P1^5;
sbit DOUT=P1^6;


void ClrCS(void)
{P14=0;}
void SetCS(void)
{P14=1;}
void Delay(unsigned int nTime)
{
	while(--nTime) {;}
}  
/***********************************************************
 Function:	Delay
 Describe:	Time delay
 Input:		Byte formated time
 Output:	void
***********************************************************/

/***********************************************************
 Function:	SPI_Initial
 Describe:	Initialize the SPI interface
 Input:		void
 Output:	void
***********************************************************/
void SPI_Initial(void)
{
	SCLK = LOW;
	DIN = LOW;
	DOUT = LOW;
	Delay(5);
}

/***********************************************************
 Function:	SPI_Transmit
 Describe:	Send and receive 16-bit data from the SPI interface
 Input:		16-bit data to be send
 Output:	16-bit data of read, user analyse the validity
***********************************************************/
WORD SPITransmit(WORD wSendData)
{
	BYTE i;
	WORD wReadData;
	
	wReadData = 0;
	
	for(i = 0; i < 16; i++)
	{
		if(wSendData & 0x8000)
			DIN = 1;
		else
			DIN = 0;
		wReadData<<=1;			//Shift first, then fill the bit
		SCLK = HIGH;
		wSendData<<= 1;
		wReadData |= DOUT;		//Receive the 16-bit data
		Delay(5);
		SCLK = LOW;
		Delay(5);		//Can be comment by acture use
	}
	return(wReadData);
}

unsigned int SendTo814X(unsigned char chigh,unsigned char clow)	
{
	unsigned int cTempHigh,cTempLow;
	unsigned int RevData;
	
	ClrCS();    //置814x片选有效
	Delay(10);         //延时时间参考814x数据手册的要求     
	cTempHigh=SPITransmit(chigh);      //向814X发送高位数据
	SetCS();
	Delay(10);	
	ClrCS(); 
	cTempLow=SPITransmit(clow);        //向814X发送低位数据
	Delay(10);
		//延时时间参考814x数据手册的要求 		
	SetCS();    //置814x片选无效
	RevData=cTempHigh<<8|cTempLow;
	return RevData;      //返回从814x读出的数据
}
unsigned int Write814xConfig(unsigned char n,unsigned char high,unsigned char low)   //n 表示设置的串口号,high表示给配置寄存器的高位字节(低三位有效),low表示给配置寄存器的低位字节
{
	unsigned char ch;
	unsigned int RevData;
	
	high=high&0x07;
	ch= 0xc0 | (n<< 3);
	high=high|ch;	
	RevData=SendTo814X(high,low);   //向指定的串口功能设置寄存器写配置
	Delay(5);
	return RevData;
}
unsigned int SendToAllCom(unsigned char c,bit Pt)   //c为需要发送的数据,Pt为第九位数据
{
	unsigned char ch;
	unsigned int RevData;

	if(Pt)
		ch=0xa1;
	else
		ch=0xa0;
	RevData=SendTo814X(ch,c);    
	return RevData;      //向所有串口发送数据并读出接收FIFO数据
}
void main()
{
	Write814xConfig(1,0xc0,0xaa);
	//SendToAllCom(0xaa,0);
	
	
	
}

回复

使用道具 举报

  离线 

4

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
44
金钱
44
注册时间
2014-8-1
在线时间
0 小时
 楼主| 发表于 2014-8-3 22:27:15 | 显示全部楼层
我改了一下代码
回复

使用道具 举报

  离线 

4

主题

8

帖子

0

精华

新手上路

Rank: 1

积分
44
金钱
44
注册时间
2014-8-1
在线时间
0 小时
 楼主| 发表于 2014-8-3 22:30:32 | 显示全部楼层


而且在debug里面的P1^6 P1^5 P1^4都是没有的,但是用示波器却能看到
回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117144
金钱
117144
注册时间
2010-12-1
在线时间
898 小时
发表于 2014-8-3 23:56:42 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
微信公众平台:正点原子   点击扫码添加
回复

使用道具 举报

  离线 

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2012-10-18
在线时间
2 小时
发表于 2017-10-15 19:59:43 | 显示全部楼层
很想请教下这个芯片的问题
回复

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-20 21:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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