ARM大作业说明部分.docx
- 文档编号:3705155
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:11
- 大小:225.87KB
ARM大作业说明部分.docx
《ARM大作业说明部分.docx》由会员分享,可在线阅读,更多相关《ARM大作业说明部分.docx(11页珍藏版)》请在冰豆网上搜索。
ARM大作业说明部分
ARM大作业:
《1》硬件部分说明
《2》软件部分说明
ARM大作业硬件原理图说明部分
原理图总共分为三部分:
1.sch2.shc3.sch
1.sch包含了:
S3C44B0处理器,外部晶振及提供RTC时钟的晶振。
S3C44B0x
外部时钟:
RTC时钟:
2.Sch包含了:
2M的flash和8M的SDRAM
2M的Flash:
8M的SDRAM:
3.sch包含了:
4个独立按键,RS232通信及三个LM117稳压和复位电路
4个独立按键:
RS232通信:
LM117稳出5.0V电压:
LM117稳出3.3V电压:
LM117稳出2.5V电压:
复位电路:
ARM大作业程序部分
程序要求包含四部分:
1.采集8路模拟信号并将模拟信号进行AD转换。
2.采集数据时每一路通道都有自己对应的周期。
RTC
3.将采集后转换的数据存储在SDRAM中。
4.将采集后转换的数据传到串口。
相应子函数的说明:
1.指定通道,开始AD转换,返回转换后数值。
intReadAdc(intch)
{
inti;
rADCCON=0x0|(ch<<2);//指定通道。
for(i=0;i<150;i++);//给切换通道一点时间。
rADCCON=0x1|(ch<<2);//开始AD转换
while(rADCCON&0x1);
while(!
(rADCCON&0x40));
for(i-0;i returnrADCDAT; } 2.RTC节拍时间中断,定义100ms中断一次,定义8通道使能标识变量。 Period=(n+1)/128; 由于RTC晶振电路中晶振是32.768KHZ,经过2的15次方分频器后给节拍中断为128Hz 当n=0时,节拍中断的周期为7.8ms,当节拍中断的周期要为100ms时,n约为12; 所以寄存器TICINT的[6: 0]位设置为大小设置为12; 定义标识数组: intfalg[8]={0};//0为disable1为enable intflagms[8]={1,2,3,4,5,6,7,8};//计算节拍中断有关的基数。 中断函数: inttick=0;//全局变量,计算节拍中断,中断的次数。 void_irqRtc_Tick(void) { tick++; if(tick%flagms[0]==0) { flag[0]=~flag[0]; } if(tick%flagms[1]==0) { flag[1]=~flag[1]; } if(tick%flagms[2]==0) { flag[2]=~flag[2]; } if(tick%flagms[3]==0) { flag[3]=~flag[3]; } if(tick%flagms[4]==0) { flag[4]=~flag[4]; } if(tick%flagms[5]==0) { flag[5]=~flag[5]; } if(tick%flagms[6]==0) { flag[6]=~flag[6]; } if(tick%flagms[7]==0) { flag[7]=~flag[7]; } } 3.将数据存储在SDRAM中。 由于SDRAM是和CPU的bank6和bank7联系着的。 所以SDRAM的最初位置为0x30000000 这里可以采用将整型数据强制转换成指针变量。 然后对这个确定了指向位置的指针变量进行操作。 int*p=(int*)0x30000000; 分别将8个通道转换后的数据存储在地址为: p,p+1,P+2,.......,p+7.的地方。 4.串口的初始化,向串口发送单个数据,向串口数组数据。 //也许可以用Uart_Printf()来实现。 这里不用这个。 串口初始化: voidUart_Init(intbadu) { rUFCON0=0x0;//禁止FIFO不使用FIFO rUMCON0=0x0;//禁止AFC不使用自动流控制 rULCON0=0x3;//不采用红外线传输模式,无奇偶校验位,1个停止位,8个数据位 rUCON0=0x245;//发送中断为电平方式,接收中断为边沿方式,禁止超时中断,允许产生错误状态中断,禁止回送模式,禁止中止信号,传输模式为中断请求模式,接收模式也为中断请求模式。 rUBRDIV0=((int)(MCLK/16./baud+0.5)-1);//根据波特率计算UBRDIV0的值。 } 发送单个数据: voidUart_SendData(intdata) { while(! (rUTRSTAT0&0x2)); Delay(10); WrUTXH0(data); } 发送数组数据: voidUart_Send(int*p) { inti=8; Uart_Init(115200); while(i--) Uart_SendData(*p++); } Main函数: voidmain(void) { inti; intch;//ch决定转换通道。 intflag[8]={0}; intflagms[8]={1,2,3,4,5,6,7,8}; intbuf[8]={0};//buf数组分别记录8个通道的数据 int*p=(int*)0x30000000;//指针p指向了。 SDRAM的首地址。 while (1) { for(i=0;i<8;i++) { ch=i; if(flag[i])//当相应通道达到自己周期时,就决定自己通道转换与否。 { buf[i]=ReadAdc(i);//将相应通道的转换后数据存入相应数组元素中。 } } //将读取的到的各个通道转换的数据存储到SDRAM中。 for(i=0;i<8;i++) { *(p+i)=buf[i]; } //将转换的数据发送到串口. Uart_Send(p); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 作业 说明 部分