久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
2440驅動MMA7455L源程序
[打印本頁]
作者:
1551531584
時間:
2020-6-5 12:23
標題:
2440驅動MMA7455L源程序
51hei.png
(23.9 KB, 下載次數: 115)
下載附件
2020-6-5 17:32 上傳
單片機源程序如下:
/****************************************************************
文件名:Main.c
功能描述:主程序
****************************************************************/
#define GLOBAL_CLK 1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "Uart.h"
void SPI_Init(void);
void WriteByte_MMA7455L(U8 addr,U8 dat);
U8 ReadByte_MMA7455L(U8 addr);
static U32 cpu_freq;
static U32 UPLL;
static void cal_cpu_bus_clk(void)
{
U32 val;
U8 m, p, s;
val = rMPLLCON; //MPLLCON上電初始值為0x00096030
m = (val>>12)&0xff; //結果為0x96=150
p = (val>>4)&0x3f; //結果為0x03=3
s = val&3; //結果為0
//(m+8)*FIN*2 不要超出32位數!
FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;//"1<<s"表示令1左移s位,即可得2^s
val = rCLKDIVN;
m = (val>>1)&3;
p = val&1;
val = rCAMDIVN;
s = val>>8;
switch (m) {
case 0:
HCLK = FCLK;
break;
case 1:
HCLK = FCLK>>1;
break;
case 2:
if(s&2)
HCLK = FCLK>>3;
else
HCLK = FCLK>>2;
break;
case 3:
if(s&1)
HCLK = FCLK/6;
else
HCLK = FCLK/3;
break;
}
if(p)
PCLK = HCLK>>1;
else
PCLK = HCLK;
if(s&0x10)
cpu_freq = HCLK;
else
cpu_freq = FCLK;
val = rUPLLCON;
m = (val>>12)&0xff;
p = (val>>4)&0x3f;
s = val&3;
UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}
void Main(void)
{
U8 key,sta;
int i;
U32 mpll_val = 0;
i = 2 ;
switch ( i ) {
case 0: //200
key = 12;
mpll_val = (92<<12)|(4<<4)|(1);
break;
case 1: //300
key = 13;
mpll_val = (67<<12)|(1<<4)|(1);
break;
case 2: //400M
key = 14;
mpll_val = (92<<12)|(1<<4)|(1);
break;
case 3: //440!!!
key = 14;
mpll_val = (102<<12)|(1<<4)|(1);
break;
default:
key = 14;
mpll_val = (92<<12)|(1<<4)|(1);
break;
}
//rMPLLCON賦值0x5c011
ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);
ChangeClockDivider(key, 12); //key=14
cal_cpu_bus_clk();
Port_Init(); //IO端口初始化
SPI_Init();//SPI初始化
MMA7455L_INIT();//MMA7455L初始化
Uart_Init();//串口初始化
Uart_Select(0);
Delay(5); //延時10ms讓IIC和SPI準備就緒
Uart_Printf("CLKCON=%x!",rCLKCON);
Uart_Printf("開始發送數據!\n\n");
//對MMA7455L的0x16寄存器寫配置數據0x05
WriteByte_MMA7455L(0x16,0x05);
//讀回0x16寄存器的配置值,判斷SPI通信是否成功.
sta=ReadByte_MMA7455L(0x16);
Uart_Printf("sta=0x%x",sta);
while(1)
{
}
}
void WriteByte_MMA7455L(U8 addr,U8 dat)
{
int n;
//片選CS置低,使能MMA7455為SPI模式
rGPFDAT &= 0xef;
Delay(1);
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
while(!(rSPSTA0&0x01==0x01)) ;
//高位置1寫操作
rSPTDAT0 = 0x80|((addr & 0x3f)<<1);
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
Uart_Printf("寫操作地址發送成功!\n");
for(n=0;n<20;n++);
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
while(!(rSPSTA0&0x01==0x01)) ;
rSPTDAT0 = dat; //寫數據
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
Uart_Printf("寫操作數據發送成功!\n");
for(n=0;n<20;n++);
//片選CS置高電平,結束SPI通信
rGPFDAT |= 0xff;
Delay(1);
}
U8 ReadByte_MMA7455L(U8 addr)
{
int n;
U8 Re_Dat;
//片選CS置低電平,使能MMA7455L為SPI模式
rGPFDAT &= 0xef;
Delay(1);
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
while(!(rSPSTA0&0x01==0x01)) ;
//讀操作高位清0
rSPTDAT0 = (addr & 0x3f)<<1;
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
Uart_Printf("讀操作地址發送成功!\n");
for(n=0;n<20;n++);
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
while(!(rSPSTA0&0x01==0x01));
Re_Dat = rSPRDAT0;
Uart_Printf("SPI狀態寄存器的數據為0x%x!\n",rSPSTA0);
for(n=0;n<20;n++);
//片選CS置高電平,結束SPI通信
rGPFDAT |= 0xff;
Delay(1);
//返回讀取數據
return Re_Dat;
}
//MMA7455L初始化
void MMA7455L_INIT(void )
{
MMA_QUEUE.MMA_HEAD=0;
MMA_QUEUE.MMA_CUR=0;
SPI_WriteREG(0x16,0x05);//級別模式
delay_nus(10);
SPI_WriteREG(0x18,0x20);
delay_nus(10);
SPI_WriteREG(0x19,0x00);
delay_nus(10);
SPI_WriteREG(0x1a,0x00);
delay_nus(10);
}
//SPI初始化
void SPI_Init(void)
{
//激活時鐘控制器的SPI位
rCLKCON |= 1 <<18;
rSPCON0 = (0<<6)|(0<<5)|(1<<4)|(1<<3)|(0<<2)|(0<<1)|1;
//查詢模式;SCK使能;主機模式;時鐘低電平有效;格式A;普通模式;
//MMA7455的SPI的傳輸波特率在工作電壓小于2.4V時最高可達4MHz,大于2.4V時可達8MHz
//SPI波特率為50MHz/2/(24+1)=1MHz
rSPPRE0 = 24;
}
復制代碼
所有資料51hei提供下載:
第4章.zip
(13.24 KB, 下載次數: 6)
2020-6-5 12:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕一区在线观看
|
吃奶动态图
|
成人h视频在线观看
|
成人福利在线
|
中国免费av
|
国产最新av
|
日韩精品视频一区二区三区
|
国产一区二区在线播放
|
成人午夜又粗又硬又大
|
人人干人人爽
|
日韩免费在线视频
|
精品日韩在线
|
中文字幕伊人
|
九九热这里有精品
|
亚洲另类色综合网站
|
精品国产一区二区三区四区
|
欧美在线小视频
|
黄色高清网站
|
亚洲欧美日韩国产精品
|
男女视频网站
|
亚洲香蕉在线
|
国产精品美女在线
|
久久久久女人精品毛片九一
|
国产伦精品一区二区三毛
|
国产片一区二区
|
国产精品亚洲精品
|
国产天堂在线
|
三级av网站
|
亚洲国产第一页
|
日本亚洲精品
|
亚洲第一伊人
|
亚洲欧美日本在线
|
99精品视频在线
|
免费国产视频
|
欧美日韩无
|
精品国产区一区二
|
国产一级一片免费播放放a 免费国产视频
|
欧美久久网
|
国产午夜精品一区二区三区四区
|
欧美日韩福利
|
亚洲综合日韩
|