STM32 F10xx 系統時鐘關連圖 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 7月 29, 2017 STM32 F10xx 系統時鐘關連圖 當您對Datasheet 規格書中STM32 F103xx的系統時鐘中的英文看不懂,又找不到簡中的說明上面的圖可以給您參考,簡體中文改來的。這是敝人用PowerPoint改來的,若有需要可mail來向向我索取ppt檔,但是修改完後需寄給我一份。敝人日後作其它RCC文件說明,還會有其它圖檔應用時才會再分享給大家。 取得連結 Facebook Twitter Pinterest 以電子郵件傳送 其他應用程式 留言
STM32 I2C-EEPROM 的讀寫 8月 01, 2017 STM32 I2C-EEPROM 的讀寫 個人引用的範例是 M24C08 ,而在這個範例中 i2c_ee.c 有幾個參數必數理解。 #define I2C_Speed 200000 #define I2C1_SLAVE_ADDRESS7 0xA0 #define I2C_PageSize 8 其第一條 #define I2C_Speed 200000 I2C 具有三種傳輸模式 : 標準模式傳輸速率為 100Kbit/s 快速模式傳輸速率為 400Kbit/s 高速模式傳輸速率為 3.4Mbit/s( 但是目前大多的 I2C 設備都不支援高速模式 ) STM32F103 中 對 I2C GPIO 埠的初始化 : static void I2C_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 致能與 I2C1 有關的時脈 */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); /* PB6-I2C1_SCL 、 PB7-I2C1_SDA*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 這裡不一定要用 50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; // 開漏輸出 GPIO_Init(GPIOB, &GPIO_InitStructure); } 這裡是設置 I2C 的傳輸速率,在調用初始化函數時 , 函數會根據我們輸入的數位經過運算後把分頻值寫入到 I2C 的時脈控制寄存器 ( 我們寫入的這個值不能高於 400KHz) 。 #define I2C1_SLAVE_ADDRESS7 0xA0 配置 閱讀完整內容
如何提高STM32 ADC的精度 7月 26, 2017 在 ST 所提供的技術手冊 "How to get the best ADC accuracy in STM32 devicse" 一文中提出造成 ADC 誤差的一些困素,如下述的重點: • 1. ADC 模組自身相關的誤差 – 1.1 偏移誤差 Offset error – 1.2 增益誤差 Gain error – 1.3 微分線性誤差 Differential linearity error – 1.4 積分線性誤差 Integral linearity error – 1.5 總不可調校誤差 Total unadjusted error • • 2. 與環境相關的 ADC 誤差 – 2.1 電源雜訊 Power supply noise – 2.2 電源穩壓 Power supply regulation – 2.3 類比輸入信號的雜訊 Analog input signal noise – 2.4 ADC 的動態範圍與最大輸入信號幅度嚴重不匹配 ADC dynamic range badly matching the maximum input signal amplitude – 2.5 類比信號源阻抗的影響 Effect of the analog signal source resistance – 2.6 信號源的容抗與 PCB 分佈電容的影響 Effect of the source capacitance and parasitic capacitance of the PCB – 2.7 注入電流的影響 Injection current effect – 2.8 溫度的影響 Temperature influence – 2.9 I/O 接腳間的串擾 I/O pin crosstalk – 2.10 EMI 導致的雜訊 EMI-induced noise 上述的原因會造成輸入ADC的電壓和讀出的電壓值有相當的誤差,因此工程師在應用時需特別注意。 而關於ADC 模組自身相關的誤差,可以用校正演算法來處理,而 與環境相關的 ADC 誤差 則可用 閱讀完整內容
ENC28J60+Uip TCP Server/Client 8月 02, 2017 接了一個專案要利用網路互相傳資料,必需同時開發 TCP Server/Client 兩端,在網路找了一些範例 同樣是利用 ENC28J60+Uip 來開發,開始找到同是 SPI2 的範例,所以下列 1~6 項 是將 SPI2 改為 SPI1 所需注意的事項。但因為不是很了解 Uip TCP 的應用,雖然改成 SPI1 但仍無法完成通訊,在進一步研究 TCP 的通訊原理後發現在 IP 應用上有問題,在修改 7, 8 兩項後終於可以利用 TCP Server/Client 來 傳資料。 ( 註 我此處用的範例是 ALIENTEK MINISTM32 擴展實驗 21 ENC28J60 網路模組實驗 ) 1. SPI2 修改為 SPI1 • 由於範例程式用的是 SPI2 原來引腳 • CS INT MISO MOSI SCK RST • PG8 PD2 PB14 PB15 PB13 PG6 • 現在的引腳 • CS INT MISO MOSI SCK RST • PC4 PC1 PA6 PA7 PA5 無 • 所以必需修改為 SPI1 2. 系統頻率 HSE 為 12000000 , SYSTEM CLOCK 為 72000000 , HSE 為 12000000 ,所以鎖頻 PLL=6 由於範例程式用的是 25M 或者是 8M 的石英振盪器,所以必需在 stm32f10x_conf.h 的程式庫中的 HSE 定義改為 12000000 。 在 main() 中設定為 Stm32_Clock_Init(9) 其中 9 為鎖頻 PLL 的倍數。因此這個參數應改為 Stm32_Clock_Init(6); //System Clock 設定 由於我們的石英振盪器為 12M ,而我們希望 SYSTEM CLOCK 為 72M , HSE 為 12M ,所以鎖頻 PLL=6 3. SPI 初始化 SPI1 閱讀完整內容
留言
張貼留言