之前做了一個項目(LPC11C14 數據采集節點部分)的筆記,有時候在地鐵上還可以復習復習。
項目會議記錄
1、主控制器
FS210開發板做為主機,采用安卓4.0.4系統。
接入模塊:Zigbee模塊(數據交互)、Camera模塊(監控)、GSM模塊(發送接受短信)
2、數據節點控制器
M0開發板,采用裸機或ucos操作系統
接入模塊:Zigbee模塊(數據交互)、風扇(降溫)、傳感器(采集數據)、蜂鳴器(警報)
項目功能:
主控制器實現功能:
APK 應用
可設置報警閥值:當溫度值超過指定閥值,發送指令控制M0啟動風扇并通過GSM模塊發送短信
界面設計:
1、顯示至少兩個節點傳過來的數據,如每個節點采集到的溫度、濕度等
2、Camera攝像頭視頻
3、需要設置界面,提供設置必要的參數,如設置發送報警短信內容,報警閥值等
(盡量美觀,人性化)
數據節點控制器功能:
1、采集數據,通過Zigbee回傳給主控制器(通過各種傳感器獲取數據)
2、監聽主控制器的命令,控制風扇、蜂鳴器等
(主控制器與數據節點控制區通過Zibgec模塊進行數據交互)
需要做的事情:
主控制器
驅動層:
1、操作系統安裝、環境搭建(完成)
2、LCD 驅動
需知道LVDS代碼位置
3、GT811 觸摸屏移植 (完成)
4、Camera 驅動移植
5、GSM 驅動
系統層:
1、GT811 輸入子系統
2、Camera 主要是HAL層 需要熟悉 Camera 子系統(照相機子系統)、V4L2
3、RILD庫(電話子系統) 對應GSM模塊
4、系統回調 對應Zigbee的數據回傳 需要編寫JNI去回調Java的方法刷UI
應用層:
界面自設計:
界面包含,顯示節點回傳的數據,顯示攝像頭的視頻數據,設置界面
數據節點控制器:
1、Zigbee 驅動
2、數據采集
三軸加速度傳感器
光敏傳感器
溫度傳感器
濕度傳感器
ADC電壓測量
3、降溫、警報
風扇驅動 (帶轉速回饋)
蜂鳴器(警報)
GT811觸摸屏 - APK - Camera
GSM
M0 - Zigbee == FS210 - Zigbee 聯調
-----------------------------------------------------------------------------------------------------------------uVision4 編譯問題
解決last line of file ends without a newline問題
warning: #1-D: last line of file ends without a newline
CCS3.3中,有時候會出現warning: #1-D: last line of file ends without a newline這種警告,只需在最后一行添加回車就可解決問題。
-----------------------------------------------------------------------------------------------------------------
環境搭建:
1、 安裝 Keil uVision4 2、CoLink 仿真器的程序安裝
參考 Android 物聯網\FS_11C14光盤\FS_11C14開發板用戶手冊 V1.02.pdf 第12頁
裸板代碼:啟動【KEIL uVision4】
建立工程:
1、【Project】-> 【New uVision Project】-> 選擇文件夾 -> 輸入工程名: Test
2、KEIL 自動彈出Select Device for Target 窗口,選擇CPU 【NXP (founded...)】->【LPC11C14x301】
彈出對話框詢問是否拷貝啟動代碼到工程中,選擇【是】,不然無法編譯。
3、新建立一個源文件,名字為main.c
燒錄配置:(不配置,無法燒錄程序到M0上)1、【Flash】->【Configure Flash Tools】
2、在Use Target Driver for Flash Programming 選擇 【CooCox Debugger】
3、點擊旁邊的按鈕【Settings】,在Additional Option 勾選【Run after Download】、【Verify Download】

調試配置:1、【Flash】->【Configure Flash Tools】,切換到Debug標簽
2、在Use 旁邊的下啦菜單選擇 CooCox Debugger 點擊旁邊的按鈕【Settings】
3、在Reset Options 下啦菜單選擇 HW RESET
4、在Adapter 下拉菜單選擇 ColinkEx

第一個裸板工程是操作LED,LPC11C14 開發板控制LED的原理圖


由此可見,LED燈是接在M0的 PIO3_0、PIO3_1
我們要操作該端口需要知道真實的物理地址,查看數據手冊。

得知 PIO的基址為 0x5000 0000,PIO3的基址為 0x5003 000
數據寄存器相對于PIO3_0偏移 0x3FFC
方向寄存器相對于PIO3_0偏移 0x8000
#include <stdio.h>
#define LPC_AHB_BASE (0x50000000UL) // PIO基址
#define LPC_GPIO3_BASE (LPC_AHB_BASE + 0x30000) // PIO3的基址
#define GPC3DIR (LPC_GPIO3_BASE + 0x8000) // PIO3 方向寄存器地址
#define GPC3DAT (LPC_GPIO3_BASE + 0x3FFC) // PIO3 數據寄存器地址
#define writel(val,reg) (*((volatile unsigned int *)reg)=val)
#define readl(reg) *((volatile unsigned int *)reg)
void sleep()
{
int i = 99;
int j = 0;
while(i--)
for(j=0; j<999; j++ );
}
int main(void)
{
writel(1, GPC3DIR); // 設置為輸出模式
while(1)
{
sleep(); // 延時
writel(1, GPC3DAT); // 寫入1 即輸出高電平
sleep(); // 延時
writel(0, GPC3DAT); // 寫入0 即輸出低電平 點亮LED等
}
}
在編譯的過程中,如果源文件和頭文件都不在工程根目錄,而另建立了文件夾,則需要在工程中指定尋找頭文件的首選路徑。

|