亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

STM32驅(qū)動(dòng)DS1302實(shí)時(shí)時(shí)鐘:GPIO模擬時(shí)序與避坑指南

STM32驅(qū)動(dòng)DS1302實(shí)時(shí)時(shí)鐘:GPIO模擬時(shí)序與避坑指南 從買(mǎi)來(lái)那塊 DS1302 模塊到把它在 STM32 上徹底調(diào)通我前后折騰了兩天。網(wǎng)上關(guān)于 DS1302 的代碼確實(shí)不少但很多都是 51 平臺(tái)直接復(fù)制過(guò)來(lái)的要么沒(méi)講時(shí)序要么對(duì) STM32 的 GPIO 模式切換一筆帶過(guò)。這篇學(xué)習(xí)筆記把整個(gè)驅(qū)動(dòng)從零寫(xiě)一遍包括為什么用 GPIO 模擬時(shí)序、命令字節(jié)的坑、BCD 碼換算、寫(xiě)保護(hù)和時(shí)鐘暫停位把你可能遇到的坑提前踩平。適合正在學(xué) STM32、想搞懂串行時(shí)序、或者需要給手頭項(xiàng)目加一個(gè)掉電不丟時(shí)間的實(shí)時(shí)時(shí)鐘的開(kāi)發(fā)者參考。1. 思路先行為什么用 GPIO 模擬 DS1302而不是硬件 SPI1.1 DS1302 是什么這個(gè)項(xiàng)目能學(xué)到什么DS1302 是一顆非常經(jīng)典的實(shí)時(shí)時(shí)鐘芯片內(nèi)部自帶秒、分、時(shí)、日、月、星期、年的寄存器還有 31 字節(jié)的非易失性靜態(tài) RAM。它的典型應(yīng)用就是給嵌入式系統(tǒng)提供“掉電后繼續(xù)走”的時(shí)間基準(zhǔn)主電源 VCC2 正常供電時(shí)芯片工作外部斷電后由 VCC1 上的紐扣電池或大電容維持計(jì)時(shí)。這種機(jī)制對(duì)很多需要記錄事件時(shí)間戳、定時(shí)任務(wù)、電子鐘表、數(shù)據(jù)記錄儀之類(lèi)的項(xiàng)目非常有用。驅(qū)動(dòng) DS1302 對(duì)你理解 STM32 的 GPIO 操作也很有幫助。它用的是三線串行接口CE、SCLK、IO看起來(lái)像 SPI但實(shí)際時(shí)序有自己的一套。手寫(xiě)這套驅(qū)動(dòng)你會(huì)把“時(shí)序圖怎么讀”“命令字節(jié)怎么組織”“雙向 IO 怎么處理”“BCD 碼怎么換算”這些問(wèn)題一次性過(guò)一遍。這些基本功在以后驅(qū)動(dòng)傳感器、存儲(chǔ)器、顯示屏?xí)r都會(huì)反復(fù)用到。從我自己的角度看這個(gè)項(xiàng)目特別適合作為“學(xué)習(xí)筆記”的素材因?yàn)樗倪壿嫴粡?fù)雜但每個(gè)環(huán)節(jié)都能挖出細(xì)節(jié)。只要認(rèn)真走一遍以后再遇到類(lèi)似的串行器件上手速度會(huì)快很多。1.2 GPIO 模擬 vs 硬件 SPI我為什么這樣選DS1302 的三線接口在某些代碼里被歸類(lèi)成“類(lèi) SPI”也有人直接用硬件 SPI 去驅(qū)動(dòng)過(guò)。但從數(shù)據(jù)手冊(cè)的時(shí)序來(lái)看它跟標(biāo)準(zhǔn) SPI 并不是一回事DS1302 需要 CE 拉高作為一次傳輸?shù)拈_(kāi)始數(shù)據(jù)按 LSB 先發(fā)命令字節(jié)帶有固定的高位標(biāo)志位而且 IO 是半雙工雙向口。用硬件 SPI 不是不行但你需要額外處理 IO 方向切換、調(diào)整時(shí)鐘極性和相位還可能被 SPI 外設(shè)的字節(jié)長(zhǎng)度、片選控制等問(wèn)題困擾。折騰半天最后發(fā)現(xiàn)還是 GPIO 模擬更干凈。GPIO 模擬的好處是每個(gè)時(shí)鐘沿、每個(gè)電平變化都在你自己手里。出問(wèn)題時(shí)可以用邏輯分析儀抓波形一步一步對(duì)時(shí)序圖定位非??臁S1302 的時(shí)鐘頻率上限大約是 2MHz實(shí)際應(yīng)用里我們通常給它 1us 級(jí)別的半周期延時(shí)這個(gè)速度對(duì) GPIO 來(lái)說(shuō)毫無(wú)壓力完全不用擔(dān)心模擬方式跑不動(dòng)。這個(gè)選擇也符合我自己的習(xí)慣能用簡(jiǎn)單方案把事情做穩(wěn)就不用復(fù)雜方案。特別是學(xué)習(xí)階段每行代碼都看得懂、每個(gè)狀態(tài)都測(cè)得出來(lái)遠(yuǎn)比“外設(shè)配置對(duì)但說(shuō)不清為什么”有價(jià)值。2. 時(shí)序與寄存器最容易翻車(chē)的三個(gè)關(guān)鍵細(xì)節(jié)2.1 命令字節(jié)、LSB 和讀寫(xiě)時(shí)序的關(guān)鍵點(diǎn)DS1302 的每次操作都是從 CE 拉高開(kāi)始然后主機(jī)通過(guò) IO 發(fā)送一個(gè)命令字節(jié)再要么寫(xiě)一個(gè)數(shù)據(jù)字節(jié)要么讀一個(gè)數(shù)據(jù)字節(jié)最后 CE 拉低。命令字節(jié)的格式是固定的bit7 固定為 1bit6 用于區(qū)分操作對(duì)象0 表示操作時(shí)鐘寄存器1 表示操作內(nèi)部 RAMbit5 到 bit1 是寄存器地址bit0 表示讀或?qū)? 寫(xiě)、1 讀。另一個(gè)容易忽略的地方是數(shù)據(jù)是 LSB first也就是低位在前。很多從 SPI 轉(zhuǎn)過(guò)來(lái)的人習(xí)慣性先發(fā)高位結(jié)果一上來(lái)就讀到完全錯(cuò)亂的數(shù)據(jù)。寫(xiě)一個(gè)字節(jié)時(shí)每次先把當(dāng)前 bit 放到 IO 上然后產(chǎn)生一個(gè) SCLK 上升沿芯片在這個(gè)上升沿采樣數(shù)據(jù)。讀一個(gè)字節(jié)時(shí)芯片會(huì)在 SCLK 下降沿之后把數(shù)據(jù)放到 IO 上所以主機(jī)應(yīng)該在 SCLK 高電平期間讀取 IO或者下降沿后稍作延時(shí)再讀。我實(shí)測(cè)在 SCLK 高電平期間讀是穩(wěn)定的前提是 IO 方向已經(jīng)切對(duì)。還有一個(gè)細(xì)節(jié)很關(guān)鍵讀命令發(fā)送完最后一個(gè) bit 之后IO 要立刻從輸出轉(zhuǎn)為輸入。如果切換慢了芯片開(kāi)始輸出數(shù)據(jù)時(shí)你的引腳還在驅(qū)動(dòng)總線兩邊打架輕則讀到錯(cuò)誤數(shù)據(jù)重則可能損傷 IO。這也是我為什么在底層函數(shù)里把“釋放 IO”放在讀字節(jié)循環(huán)前面。2.2 寄存器地址表與 BCD 碼換算DS1302 的時(shí)鐘寄存器從秒到年寫(xiě)地址和讀地址相差 1規(guī)律非常明顯。我整理了一張常用地址表寄存器寫(xiě)地址讀地址說(shuō)明秒0x800x81bit7 是時(shí)鐘暫停位 CH分0x820x83無(wú)特殊標(biāo)志位時(shí)0x840x85bit7 是 12/24 小時(shí)模式標(biāo)志日0x860x87無(wú)特殊標(biāo)志位月0x880x89無(wú)特殊標(biāo)志位星期0x8A0x8B取值范圍 1 到 7年0x8C0x8D兩位年份如 24 表示 2024寫(xiě)保護(hù)0x8E0x8Fbit7 置 1 禁止寫(xiě)入涓流充電0x900x91用于給備份電容充電時(shí)鐘突發(fā)0xBE0xBF一次連續(xù)讀寫(xiě)全部時(shí)鐘寄存器RAM 突發(fā)0xFE0xFF一次連續(xù)讀寫(xiě) 31 字節(jié) RAM芯片內(nèi)部的時(shí)間數(shù)據(jù)全部用 BCD 碼保存也就是說(shuō)一個(gè)字節(jié)的高四位表示十位低四位表示個(gè)位。比如秒寄存器里存 0x45就代表 45 秒而不是十進(jìn)制的 45 對(duì)應(yīng)的 0x2D。所以讀寫(xiě)時(shí)間時(shí)必須有十進(jìn)制到 BCD、BCD 到十進(jìn)制的轉(zhuǎn)換函數(shù)。這個(gè)換算本身不難但漏掉任何一個(gè)方向都會(huì)讓你調(diào)半天。2.3 寫(xiě)保護(hù)位、時(shí)鐘暫停位和 24 小時(shí)模式的坑寫(xiě)保護(hù)是新手第一個(gè)容易踩的坑。DS1302 上電后寫(xiě)保護(hù)位不一定處于關(guān)閉狀態(tài)如果你不先把寫(xiě)保護(hù)位寄存器0x8E的 bit7 清零那么所有寫(xiě)入操作都會(huì)被忽略時(shí)間怎么都寫(xiě)不進(jìn)去。很多人調(diào)了很久“寫(xiě)不進(jìn)去”最后發(fā)現(xiàn)就是少了這一句。第二個(gè)坑是秒寄存器里的 bit7也就是時(shí)鐘暫停位。當(dāng)這個(gè)位為 1 時(shí)芯片內(nèi)部振蕩器被關(guān)閉秒數(shù)根本不會(huì)走。如果你發(fā)現(xiàn)模塊能讀到時(shí)間但秒數(shù)一直不變十有八九是這個(gè)位沒(méi)清。初始化時(shí)讀秒寄存器把 bit7 清掉再寫(xiě)回去時(shí)鐘才會(huì)真正跑起來(lái)。第三個(gè)坑比較隱蔽是小時(shí)寄存器的掩碼處理。秒、分寄存器讀出來(lái)時(shí)通常用 0x7F 把最高位清掉小時(shí)寄存器卻有人用 0x3F。問(wèn)題在于 24 小時(shí)制下小時(shí)十位的 2 存儲(chǔ)在 bit6如果你用 0x3F 去掩碼會(huì)把 20 點(diǎn)到 23 點(diǎn)的數(shù)據(jù)直接變成 0 點(diǎn)到 3 點(diǎn)。正確做法是設(shè)置時(shí)間時(shí)用 0x7F 清除 12/24 模式的 bit7讀取時(shí)也用 0x7F 保留 bit6。這個(gè)細(xì)節(jié)不踩一次很難意識(shí)到我在日志里看到 20 點(diǎn)讀成 00 點(diǎn)的時(shí)候還納悶了很久。3. 驅(qū)動(dòng)代碼實(shí)現(xiàn)從底層字節(jié)讀寫(xiě)到時(shí)間封裝3.1 引腳定義與 GPIO 初始化開(kāi)漏模式的便利我先說(shuō) GPначала引腳分配。以 STM32 的 GPIOB 為例PB0 接 CEPB1 接 SCLKPB2 接 IO。芯片的 VCC2 接 3.3VGND 接地IO 線上加一個(gè) 4.7k 歐姆上拉電阻到 3.3VVCC1 我接了一個(gè)紐扣電池座。32.768kHz 晶振的兩端按模塊設(shè)計(jì)接好通常模塊上已經(jīng)預(yù)留了電容位置。初始化 GPIO 時(shí)我對(duì)三個(gè)引腳用了不同策略。CE 和 SCLK 是主機(jī)輸出配置成推挽輸出。IO 是雙向口我選擇了開(kāi)漏輸出模式并開(kāi)啟內(nèi)部上拉配合外部 4.7k 上拉電阻。為什么用開(kāi)漏因?yàn)?STM32 的開(kāi)漏輸出模式下輸出數(shù)據(jù)寄存器寫(xiě) 1 時(shí)引腳處于釋放狀態(tài)此時(shí)可以把這個(gè)引腳當(dāng)輸入用直接讀 GPIO 的輸入數(shù)據(jù)寄存器就能拿到外部電平。這樣 IO 方向切換不再需要重新配置 GPIO 模式寫(xiě)數(shù)據(jù)時(shí)寫(xiě) 0 和寫(xiě) 1讀數(shù)據(jù)時(shí)寫(xiě) 1 釋放總線然后讀穩(wěn)定又干凈。如果使用推挽輸出理論上寫(xiě)數(shù)據(jù)更快但讀取前必須把引腳從輸出模式切換到輸入模式切換時(shí)機(jī)不對(duì)很容易產(chǎn)生毛刺。對(duì)比下來(lái)開(kāi)漏加外部上拉更合適尤其適合 DS1302 這種低速半雙工接口。#include main.h #include stdint.h #define DS1302_CE_PORT GPIOB #define DS1302_CE_PIN GPIO_PIN_0 #define DS1302_SCLK_PORT GPIOB #define DS1302_SCLK_PIN GPIO_PIN_1 #define DS1302_IO_PORT GPIOB #define DS1302_IO_PIN GPIO_PIN_2 #define DS1302_CE_LOW() HAL_GPIO_WritePin(DS1302_CE_PORT, DS1302_CE_PIN, GPIO_PIN_RESET) #define DS1302_CE_HIGH() HAL_GPIO_WritePin(DS1302_CE_PORT, DS1302_CE_PIN, GPIO_PIN_SET) #define DS1302_SCLK_LOW() HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_RESET) #define DS1302_SCLK_HIGH() HAL_GPIO_WritePin(DS1302_SCLK_PORT, DS1302_SCLK_PIN, GPIO_PIN_SET) #define DS1302_IO_WRITE(v) HAL_GPIO_WritePin(DS1302_IO_PORT, DS1302_IO_PIN, (v) ? GPIO_PIN_SET : GPIO_PIN_RESET) #define DS1302_IO_READ() HAL_GPIO_ReadPin(DS1302_IO_PORT, DS1302_IO_PIN) static void ds1302_gpio_init(void) { GPIO_InitTypeDef gpio {0}; __HAL_RCC_GPIOB_CLK_ENABLE(); gpio.Pin DS1302_CE_PIN | DS1302_SCLK_PIN; gpio.Mode GPIO_MODE_OUTPUT_PP; gpio.Pull GPIO_NOPULL; gpio.Speed GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, gpio); gpio.Pin DS1302_IO_PIN; gpio.Mode GPIO_MODE_OUTPUT_OD; gpio.Pull GPIO_PULLUP; HAL_GPIO_Init(GPIOB, gpio); DS1302_CE_LOW(); DS1302_SCLK_LOW(); DS1302_IO_WRITE(1); }初始化最后那三行不是擺設(shè)。CE 低電平讓芯片處于待機(jī)狀態(tài)SCLK 低電平保證沒(méi)有時(shí)鐘沿觸發(fā)誤動(dòng)作IO 寫(xiě) 1 釋放總線避免復(fù)位后引腳狀態(tài)不確定拖住總線。3.2 底層讀寫(xiě)一個(gè)字節(jié)實(shí)現(xiàn)和原理看代碼前先明確一下 DS1302 的位時(shí)序。寫(xiě)字節(jié)時(shí)主機(jī)把當(dāng)前位放到 IO 上然后 SCLK 拉高形成上升沿芯片采樣再拉低準(zhǔn)備下一位。讀字節(jié)時(shí)芯片在 SCLK 下降沿之后更新輸出所以主機(jī)可以在 SCLK 高電平期間讀取 IO。static void ds1302_delay_us(uint32_t us) { for (uint32_t i 0; i us; i) { for (volatile uint32_t j 0; j 16U; j) { __NOP(); } } } static void ds1302_write_byte(uint8_t dat) { uint8_t i; for (i 0; i 8; i) { DS1302_IO_WRITE(dat 0x01); DS1302_SCLK_HIGH(); ds1302_delay_us(1); DS1302_SCLK_LOW(); ds1302_delay_us(1); dat 1; } } static uint8_t ds1302_read_byte(void) { uint8_t i, dat 0; DS1302_IO_WRITE(1); for (i 0; i 8; i) { dat 1; DS1302_SCLK_HIGH(); ds1302_delay_us(1); if (DS1302_IO_READ()) { dat | 0x80; } DS1302_SCLK_LOW(); ds1302_delay_us(1); } return dat; }讀函數(shù)里每次循環(huán)先把 dat 右移一位再根據(jù) IO 電平?jīng)Q定要不要置最高位相當(dāng)于在收集一個(gè)反轉(zhuǎn)的移位寄存器。為什么不在循環(huán)開(kāi)始直接讀 IO 再移位也可以但要保證第 0 位落在 bit0而不是最后變成反序。我習(xí)慣先移位再置位配合 LSB first 的特性最后自然得到正確的字節(jié)。延時(shí) 1us 是故意的。DS1302 的 SCLK 最快大概到 2MHz半個(gè)周期就是 250ns 左右不延時(shí)也能跑。但實(shí)測(cè)中如果 STM32 主頻較高、代碼優(yōu)化開(kāi)得激進(jìn)沒(méi)有延時(shí)的時(shí)鐘沿翻轉(zhuǎn)容易超出芯片規(guī)格導(dǎo)致偶發(fā)讀取錯(cuò)誤。加 1us 延時(shí)后時(shí)序余量很充足又不影響實(shí)際體驗(yàn)屬于“花小錢(qián)買(mǎi)個(gè)穩(wěn)”。3.3 寄存器讀寫(xiě)與時(shí)間結(jié)構(gòu)封裝底層寫(xiě)好之后寄存器讀寫(xiě)就很直白了。注意我的接口約定所有寄存器參數(shù)統(tǒng)一使用偶數(shù)地址也就是手冊(cè)里的“寫(xiě)地址”函數(shù)內(nèi)部把 bit0 改成 0 或 1。void ds1302_write_reg(uint8_t reg, uint8_t val) { reg 0xFE; DS1302_CE_HIGH(); ds1302_write_byte(reg); ds1302_write_byte(val); DS1302_CE_LOW(); } uint8_t ds1302_read_reg(uint8_t reg) { uint8_t val; reg | 0x01; DS1302_CE_HIGH(); ds1302_write_byte(reg); val ds1302_read_byte(); DS1302_CE_LOW(); return val; }每次傳輸 CE 都要經(jīng)歷一次拉低拉高。CE 拉低是固定的結(jié)束標(biāo)志不要省略。如果沒(méi)有在讀完最后一個(gè) bit 后把 CE 拉低芯片不會(huì)正常結(jié)束本次傳輸下一次操作時(shí)序會(huì)亂。這個(gè)坑我在調(diào)試突發(fā)模式時(shí)踩過(guò)后面會(huì)細(xì)說(shuō)。接下來(lái)是 BCD 轉(zhuǎn)換和時(shí)間結(jié)構(gòu)。typedef struct { uint8_t year; uint8_t month; uint8_t day; uint8_t week; uint8_t hour; uint8_t min; uint8_t sec; } ds1302_time_t; static uint8_t ds1302_dec_to_bcd(uint8_t dec) { return (uint8_t)(((dec / 10) 4) | (dec % 10)); } static uint8_t ds1302_bcd_to_dec(uint8_t bcd) { return (uint8_t)((bcd 4) * 10 (bcd 0x0F)); } void ds1302_set_time(const ds1302_time_t *tm) { ds1302_write_reg(0x8E, 0x00); ds1302_write_reg(0x80, ds1302_dec_to_bcd(tm-sec) 0x7F); ds1302_write_reg(0x82, ds1302_dec_to_bcd(tm-min) 0x7F); ds1302_write_reg(0x84, ds1302_dec_to_bcd(tm-hour) 0x7F); ds1302_write_reg(0x86, ds1302_dec_to_bcd(tm-day) 0x3F); ds1302_write_reg(0x88, ds1302_dec_to_bcd(tm-month) 0x1F); ds1302_write_reg(0x8A, ds1302_dec_to_bcd(tm-week) 0x07); ds1302_write_reg(0x8C, ds1302_dec_to_bcd(tm-year)); ds1302_write_reg(0x8E, 0x80); } void ds1302_get_time(ds1302_time_t *tm) { uint8_t b; b ds1302_read_reg(0x80); tm-sec ds1302_bcd_to_dec(b 0x7F); b ds1302_read_reg(0x82); tm-min ds1302_bcd_to_dec(b 0x7F); b ds1302_read_reg(0x84); tm-hour ds1302_bcd_to_dec(b 0x7F); b ds1302_read_reg(0x86); tm-day ds1302_bcd_to_dec(b 0x3F); b ds1302_read_reg(0x88); tm-month ds1302_bcd_to_dec(b 0x1F); b ds1302_read_reg(0x8A); tm-week ds1302_bcd_to_dec(b 0x07); b ds1302_read_reg(0x8C); tm-year ds1302_bcd_to_dec(b); }設(shè)置時(shí)間函數(shù)第一行關(guān)閉寫(xiě)保護(hù)最后一行為可選的重新開(kāi)啟寫(xiě)保護(hù)。如果你打算頻繁校時(shí)可以留著寫(xiě)保護(hù)打開(kāi)防止其他代碼誤操作時(shí)間寄存器。讀時(shí)間函數(shù)里的小時(shí)掩碼用了 0x7F而不是常見(jiàn)的 0x3F這一點(diǎn)我在前文反復(fù)強(qiáng)調(diào)過(guò)20 點(diǎn)到 23 點(diǎn)的十位信息在 bit6用錯(cuò)掩碼會(huì)直接把時(shí)間讀錯(cuò)。3.4 main 函數(shù)接入示例接入工程很簡(jiǎn)單初始化調(diào)用一次 gpio init如果模塊是第一次上電或者需要校時(shí)就調(diào)用一次 set_time之后循環(huán)讀時(shí)間即可。int main(void) { HAL_Init(); SystemClock_Config(); ds1302_gpio_init(); ds1302_time_t t { .year 24, .month 5, .day 18, .week 6, .hour 10, .min 30, .sec 0 }; ds1302_set_time(t); while (1) { ds1302_get_time(t); printf(%02u-%02u-%02u %02u:%02u:%02u week%u\r\n, t.year, t.month, t.day, t.hour, t.min, t.sec, t.week); HAL_Delay(1000); } }注意演示代碼里每次上電都 set_time實(shí)際項(xiàng)目不該這么做否則每次斷電重啟時(shí)間都會(huì)重置。正確做法是只做初始化清除寫(xiě)保護(hù)和時(shí)鐘暫停位讓芯片跟著備用電池繼續(xù)走。如果需要判斷“是否需要校時(shí)”可以存一個(gè)標(biāo)志位到 DS1302 內(nèi)置 RAM或者通過(guò)按鍵、上位機(jī)命令主動(dòng)校時(shí)。4. 調(diào)不通怎么辦常見(jiàn)癥狀排查與避坑實(shí)錄4.1 讀數(shù)全是 0xFF 或 0x00優(yōu)先排查這五點(diǎn)如果你讀出來(lái)的時(shí)間全是 0xFF或者全是 0x00不要急著懷疑芯片壞了。按照下面這個(gè)順序查絕大多數(shù)問(wèn)題都能定位。第一查接線。CE、SCLK、IO 三根線有沒(méi)有接反VCC2 的電壓是否在 2.0V 到 5.5V 之間GND 是不是和 STM32 共地。很多模塊自帶電池座電池極性反了也會(huì)導(dǎo)致怪現(xiàn)象。第二查 IO 上拉。如果用開(kāi)漏模式但沒(méi)有外部上拉只是依賴 STM32 內(nèi)部上拉讀數(shù)據(jù)時(shí)總線可能被拉到一個(gè)不穩(wěn)定的中間態(tài)尤其在 IO 方向切換的瞬間。所以外部 4.7k 上拉強(qiáng)烈建議要加。第三查 SCLK 延時(shí)。代碼里的 1us 延時(shí)是否真的生效。有些工程開(kāi)了 O3 優(yōu)化空循環(huán)可能被編譯器優(yōu)化掉一部分導(dǎo)致時(shí)鐘翻轉(zhuǎn)過(guò)快。第四查 CE 時(shí)序。每次讀寫(xiě)都必須 CE 高電平開(kāi)始、低電平結(jié)束。如果 CE 一直懸空或者沒(méi)有正確拉低芯片的傳輸狀態(tài)會(huì)混亂。第五查命令字節(jié)。最簡(jiǎn)單的方法是買(mǎi)個(gè)十幾塊錢(qián)的邏輯分析儀抓一下 CE、SCLK、IO 三根線對(duì)一下命令字節(jié)是不是 0x80 寫(xiě)、0x81 讀這樣的正確序列。沒(méi)有邏輯分析儀的話可以用 GPIO 翻轉(zhuǎn)法在讀寫(xiě)函數(shù)前后翻轉(zhuǎn)一個(gè)調(diào)試引腳再用示波器看間隔。我這里遇到過(guò)一次比較隱蔽的情況讀出來(lái)全是 0xFF追查發(fā)現(xiàn)是 IO 引腳在初始化時(shí)被配置成了推挽輸出寫(xiě)數(shù)據(jù)時(shí)正常但讀數(shù)據(jù)前切換輸入模式?jīng)]有成功。換成開(kāi)漏模式后問(wèn)題再?zèng)]出現(xiàn)過(guò)。4.2 秒數(shù)不走、分鐘亂跳的處理秒數(shù)完全不動(dòng)大概率是時(shí)鐘暫停位。秒寄存器 bit7 是 CH為 1 時(shí)振蕩器關(guān)閉。初始化時(shí)或者每次 set_time 時(shí)把這個(gè)位清 0秒針就開(kāi)始走了。如果清 0 之后走了幾秒又停住可能是代碼某處又把秒寄存器寫(xiě)成帶 CH 位的數(shù)據(jù)比如沒(méi)有掩碼直接寫(xiě)回了一個(gè)含 0x80 的 BCD 值。分鐘亂跳則常發(fā)生在連續(xù)單字節(jié)讀取時(shí)。因?yàn)槊牒头质莾蓚€(gè)獨(dú)立寄存器讀取過(guò)程中如果恰好跨越秒進(jìn)位邊界你可能讀到“新秒 舊分”的組合看起來(lái)就是分鐘突然變化。避免辦法有兩個(gè)。第一個(gè)是連續(xù)讀兩次秒寄存器如果兩次結(jié)果不一致說(shuō)明跨越了進(jìn)位重新讀一遍完整時(shí)間。第二個(gè)更優(yōu)雅直接使用時(shí)鐘突發(fā)模式一次讀出秒、分、時(shí)、日、月、星期、年 7 個(gè)字節(jié)減少跨寄存器的不一致窗口。突發(fā)讀命令是 0xBFCE 拉高后發(fā)命令然后連續(xù)讀 7 個(gè)字節(jié)最后 CE 拉低。要注意的是CE 保持高電平期間芯片會(huì)持續(xù)輸出數(shù)據(jù)所以必須按需要的長(zhǎng)度讀讀完立刻拉低 CE否則會(huì)進(jìn)入循環(huán)輸出時(shí)序全部亂掉。4.3 掉電不保存和涓流充電的配置掉電后時(shí)間丟失最常見(jiàn)原因是 VCC1 沒(méi)有接備用電源或者紐扣電池沒(méi)電了。DS1302 正常工作時(shí)由 VCC2 供電斷電后切換到 VCC1。注意 VCC1 的電壓不能高于 VCC2 加 0.3V否則內(nèi)部電源切換電路可能出問(wèn)題。所以 VCC1 接 3V 紐扣電池或 2.4V 到 3.6V 的超級(jí)電容是穩(wěn)妥的。如果你想用超級(jí)電容并希望主電源在的時(shí)候自動(dòng)給它充電可以配置涓流充電寄存器 0x90。這個(gè)寄存器的用法比較講究高四位 TCS 必須寫(xiě)成 1010 才會(huì)使能充電中間兩位選擇二極管數(shù)量低兩位選擇充電電阻。一個(gè)常見(jiàn)配置是 0xA5代表一個(gè)二極管加 2k 歐姆電阻也有模塊出廠配置成 0xA6 或 0xA7。如果這個(gè)寄存器的 TCS 位不是 1010涓流充電是關(guān)閉的。我自己踩過(guò)充電相關(guān)的一個(gè)坑一開(kāi)始為了省事直接寫(xiě) 0xA5結(jié)果 0.22F 的超級(jí)電容很快就充滿了但芯片時(shí)間正常。后來(lái)?yè)Q了大容量電容才發(fā)現(xiàn)如果電容太大2k 電阻的充電電流可能偏大需要根據(jù)電容容量調(diào)整電阻檔位。所以沒(méi)什么特別需求時(shí)不要把涓流充電開(kāi)得太激進(jìn)寧可電容大一點(diǎn)、充得慢一點(diǎn)。5. 最后再分享三個(gè)實(shí)用小技巧5.1 讀時(shí)間更穩(wěn)的一個(gè)小技巧突發(fā)讀模式前面提到突發(fā)模式可以減少跨秒進(jìn)位的讀數(shù)不一致問(wèn)題這里直接給一個(gè)簡(jiǎn)單的實(shí)現(xiàn)。時(shí)鐘突發(fā)讀命令是 0xBFCE 高電平期間連續(xù)讀 7 個(gè)字節(jié)最后 CE 拉低。void ds1302_get_time_burst(ds1302_time_t *tm) { uint8_t buf[7]; uint8_t i; DS1302_CE_HIGH(); ds1302_write_byte(0xBF); for (i 0; i 7; i) { buf[i] ds1302_read_byte(); } DS1302_CE_LOW(); tm-sec ds1302_bcd_to_dec(buf[0] 0x7F); tm-min ds1302_bcd_to_dec(buf[1] 0x7F); tm-hour ds1302_bcd_to_dec(buf[2] 0x7F); tm-day ds1302_bcd_to_dec(buf[3] 0x3F); tm-month ds1302_bcd_to_dec(buf[4] 0x1F); tm-week ds1302_bcd_to_dec(buf[5] 0x07); tm-year ds1302_bcd_to_dec(buf[6]); }這段代碼與單字節(jié)讀取的效果差別在讀數(shù)的連續(xù)性。對(duì)精度要求不高的場(chǎng)景用單字節(jié)逐項(xiàng)讀取也夠但如果你做的是數(shù)據(jù)記錄儀這類(lèi)對(duì)時(shí)間一致性有要求的設(shè)備建議直接用突發(fā)讀。5.2 31 字節(jié) RAM 的妙用和擴(kuò)展玩法DS1302 除了時(shí)間寄存器還有一塊 31 字節(jié)的 RAM地址從 0xC0 到 0xFD寫(xiě)地址是偶數(shù)讀地址對(duì)應(yīng)加 1。這塊 RAM 在電池供電時(shí)會(huì)保持?jǐn)?shù)據(jù)非常適合存放一些掉電不能丟的小參數(shù)比如設(shè)備編號(hào)、校時(shí)標(biāo)志、上次關(guān)機(jī)時(shí)間。使用方式就是普通的寄存器讀寫(xiě)只是地址范圍換一下。我自己的擴(kuò)展玩法是做一個(gè)“開(kāi)機(jī)判斷”首次上電時(shí)讀 RAM 里的一個(gè)標(biāo)志字節(jié)如果不是預(yù)設(shè)魔數(shù)就認(rèn)為模塊從未初始化自動(dòng)執(zhí)行一次 set_time并把魔數(shù)寫(xiě)入 RAM。這樣既不會(huì)每次開(kāi)機(jī)都重置時(shí)間也能在換電池后自動(dòng)重新校時(shí)。這個(gè)思路可以移植到很多帶掉電存儲(chǔ)需求的場(chǎng)景里。另外如果你需要輸出更精確的秒信號(hào)可以看 DS1302 的 SQW 引腳功能不過(guò)很多模塊沒(méi)把該引腳引出來(lái)。真要高精度長(zhǎng)穩(wěn)計(jì)時(shí)還是直接選帶溫度補(bǔ)償?shù)膶?shí)時(shí)時(shí)鐘方案DS1302 的優(yōu)勢(shì)是便宜、簡(jiǎn)單、入門(mén)友好。這塊芯片雖然老但它把串行時(shí)序、雙向 IO、寄存器操作這幾個(gè)嵌入式基本功都串了起來(lái)。我第一次調(diào)通的時(shí)候看到串口打印出穩(wěn)定的秒數(shù)心里還是挺有成就感的。如果你也卡在某個(gè)讀數(shù)的怪問(wèn)題上試著用邏輯分析儀抓一下波形很多時(shí)候一眼就能看出問(wèn)題。代碼我已經(jīng)整理到開(kāi)源倉(cāng)庫(kù)里對(duì)照這篇筆記看應(yīng)該能把 DS1302 在 STM32 上順利跑起來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产女生在线| 亚洲国产精品久久久男人的天堂| 九热久| 1240青青草一区二区三区视频天爱| 久久久久9久久久久| 9999九九九久久久| 麻花豆传媒剧国产MV出差| 98色网| 国产2.3.4区| 亚洲成人日韩小说| 农村妇女精品一区二区| 国产亚洲精品精AV.| 亚洲欧美大| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 91男同| 370p日韩欧美亚洲精品| 超碰97资源大奶| 酒色综合网| 国产超碰人人操| 伊人久久亚洲中文字幕不卡| 嗯啊视频免费在线观看| 久日91在线| 亚洲欧洲中文日韩女优乱码| 97超碰天天| 一级性爱视频免费观看| 欧美韩国你懂得在线 | 内射白嫩美女| 97亚洲综合影院| 黑丝内射一区二区三区| 国产日韩区| 躁躁日曰躁2020| 国产对白刺激视频| 91精片| 亚洲精品蜜桃久久久一区二区三区| 精品人妻一区二区三区不卡断| 五月婷婷无码| 久久性爱视频免费看| 91老熟女逼| 在线岛| 国产诱惑| 亚洲官网在线| 人人色人人操在线| 欧美五十路熟| 男女香蕉一区二区| 久热色情精品| 免费在线黄片视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 91欧美少妇| 色99在线| 操逼国产免费| 九九热九九| 日本三级人妻a人妻一在线| 另类图片欧美激情综合| 日本中文字幕一区| 91 刺激在线| 亚洲码在线中文在线观看| 99精品人人爽| 日韩激情视频| 精品超碰中文在线| 日韩Va亚洲va欧美Ⅴa久久| 亚洲欧洲日韩中文字幕一区| 91色图片| 120分钟婬片免费看| 91久久久亚洲| 亚洲欧美综合图片| 日本性一区| 97超碰逼| 男人的天堂2010| av在线观看不卡网站| 久久禁| 后入内射蜜桃臀| 欧美色色色| 8x福利精品第一福利视频导航| 色哟哟AV| #NAME?| 久操99| 中文字幕aⅴ在线视频| 一区二区视频在看| 国产后入内射| 欧美韩国你懂得在线| 99热网站| 成视频在线观看免费看| jk白丝没脱就开始啪啪| 九九九色| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 岛国不卡超碰护士AV在线播放| 口爆综合网| 日本精品一区二区中文字幕| 日韩精品三区四区| 97九色人妻| 激情九月婷婷| 亚洲aV性爱| 一区二区三区四区免费视频| 国产三级资源在线观看| 黄视频免费| 亚洲97在线| 久久久555| 69久久| 中文字幕精品亚洲熟女| 中文字幕无码不卡啪啪| 老熟女中文字幕高清| 啪啪91| 日本天天人人狠狠在线日美女 | 九九久久精品| 丁香激情五月| 国产精品一区人妻精品阁在线| 丁香五月久久| 男人的天堂亚洲| 久久综合九九| 91精品人妻一区二区三区蜜桃臀| 久久9亚洲| 啊啊啊好爽快点啊啊啊嗯嗯| 啊啊啊啊嗯嗯嗯用力好爽 | 中文字幕88av在线| 色欲人妻一区二区在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 天天看高清麻豆| #NAME?| 欧洲亚洲综合| 亚洲玖玖爱| 久久r精品| 一本大道久| 日韩欧美~中文字| 97久久久久久久久久| 一区二区三区四区在线不卡| 嗯~啊~轻一点 视频| 熟女熟妇一区二区三四区| 91色欧美| 超清中文乱码字幕| 强奸乱伦免费网站| 日韩欧美经典在线观看| 欧美18禁91| 97精品国产手机| 色网1| 在线免费观看日韩一区| 亚洲强奸乱伦影视网| 99色天堂| 日本999精品视频| 综合av影片| 综合情欲网| 天天日夜干| 午夜国产综合视频在线观看 | 男人的天堂日韩| 97在线亚洲| 欧美写真视频一区| 日韩性爱免费观看视频| 黑人精品成人一区二区三区| 狠狠欧美| 激情四射熟女丝袜| 国产强奸乱伦第1页| 岛国视频一二三区| 又摸又舔在线观看网站| 秋霞Av理论一级在线| 日韩无码操逼片| 韩国三级理论在线| 在线啊啊啊啊| 超碰4A| 日韩欧美性爱电影在线观看| 亚洲成?V人片在线观看福利| 天天看少妇| 久久久久久中文版| 极品另类| 91欧美| 啊啊啊好舒服好爽啊啊啊视频| 欧美国产操逼| 五月丁香黄色网| 亚洲最大AV网| 日日夜夜国产综合| 97操| 亚州情色j区| 后入式视频国产自| 日韩欧美成人综合在线| 天天综合网一91网| 国产三级中文字幕粉嫩 | 夜夜爽夜夜爽| 国产日韩精品一区二区三区| 99精品无码| 99这里只有精品国产| 中文字幕高清20页视频| 天天拍夜夜| 大地资源在线观看中文第二页| 国产日韩精品一区二区三区| 加勒比综合88| 嗯嗯啊啊操死我| 日日AAvv| 国产精选三级在线观看| 大香蕉琪琪日本女优不卡| 色播综合| 亚洲同性aV综合| 免费看A片毛毛片在线播| 偷拍亚洲高清图片| 黄片免费视频2019| 啊啊啊啊啊操我视频| 午夜经典| 任你艹| 久久久久久九九九九九九| 澳门黄片一香蕉视频| 日日狠狠久久偷偷色综合免费| 疯操AV| 色色色天美视频| 9精品久久| 日本免费一级AAA大片器| julia高潮后不停追击中出| 91在线一起| 精品亚洲国产成人AV制服丝袜| 欧美天堂超碰97| 亚洲无码超碰免费| 亚洲男人的天堂AV| 激情久久久| 男人天堂毛片| 五月天成人综合| 亚洲国产精品无码AV久久| 啊啊啊啊啊在线观看网址 | 欧美日韩在线小说 | 欧美日韩国产色图在线| 少妇熟女视频一二三区| 九九色影院| 精品人妻久久久久一区二区三区| 五月丁香色色网| 久久二| 激情文学网伊人| 99人妻| 综合 青草 伊久久 影院 综合| 91综合色噜噜| B049AV在线播放| 日本色色色视频| 亚洲第一页综合在线| 国产尹人在线视频免费| 91亚洲情色| 欧美一区二区在线资源| 玖玖爱免费观看视频| 欧美自拍网| 密臀在线免费观看| 日本视频一区二区三区| 草草电影院| 熟女高潮合集-永久久久-成人AV| 丁香五月性| 久久精品一区二区三区四区五区| 国精综合一二三区影视| 五月丁香婷婷色| 亚洲 欧美 精品专区 极品| 淫乱图区 | 98人妻精品一区二区色欲| 夜夜综合| 69精品在线| 日本1区2区不卡视频| 亚洲AV在线资源| 116美女午夜| 国产亚洲精品美女久久久久久2021| 欧美小说区视频区| 天天影视射综合网| 国产视频一区二区在线| 亚洲欧美日韩夜夜| 99re免费视频精品全部| 欧美性色欧美| 动漫区日韩区欧美区| 色爱国产| 久久久久亚洲?V片无码V| 日韩精品 欧美激情| 啊啊啊啊啊啊好湿好爽视频| 日韩高潮一区| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 啊啊啊好舒服好爽啊啊啊视频| 啪一啪免费视频| 麻豆国产精品午夜视频| 外国免费性情大片| 欧美91久久久久| 日韩AV一区二区三区三州三州| 亚洲蜜乳av| 色婷婷一区二区三区久久| 国产小炒后入式| 98色网| 国产日韩区| 国产欧美另类久久久精品课程| 伊人一区二区三区| 亭亭丁香激情| 综合影院亚洲| 天美一二三在线观看Av| 久久熟女人| 国产亚洲精品自在线亚洲情侣| 收看日本人日bb| 国产精品一区二区亚洲人成毛片| 蜜臀中文字幕| 呦呦影院| 亚洲视频中文一区| 激情综合网亚洲| 99999re| 91狠狠综合久久| 97超碰色中文字幕| 搡老熟女国产1000部| 日日噜噜夜夜久久亚洲一区二区| 九九夜精品九九在线| 欧美日韩人人精品| 后入 亚洲 美女 射| 淫淫总合网| 97资源超碰| 亚洲精品 大香蕉| 激情第四色| 久热99| 99操视频| 99热这里只有精品99| 婷婷91| 久久99视频| 亚洲日本韩国在线| 久久久精品国产亚洲伊人| 日韩人妻大香蕉| 色情五月婷婷| 欧美日韩人人精品| 国产精品久久久九九九| 久久久精品久久| 久超碰这里只有精品| 高清无码学生妹高潮| 国内毛片四区| 91在线免费精品视频| 探花视频免费观看国产专区| 日本乱人伦片中文三区| 人人操人人摸人人看人人插| 国产AV超爽| 欧美性爱五月天| 午夜精品久久久久久久男人的天堂 | 五月天激情婷婷| 国模限制级电影| 人妻美腿丝袜制服诱惑综合天堂-| 成人AV素股で擦久久| 日韩三级在线观看mp4| 60秒免费小视频| 日韩人妻精品| 日韩欧美传媒一区国产| www.久久制服糖| 人妻乱仑一区二区三区| 看看小穴| 狠操91,com| 啊啊啊水好多| 久操com| 国产精品视频精品一二| 亚洲最大黄网| 九9精品| 久久激情婷婷| 人妻少妇被猛烈进入中| 97爱爱爱综合| 亚洲系列欧美| 欧美18 在线观看| 色综合久久88色综合久久天天| 开心婷婷五月| 99黄页网站| 欧美激情区| 日本免费一级AAA大片器| 丁香五月色| 青青草精玖玖69精品| 91中文字幕在线观看| 搡老女人911熟妇老熟女| 欧美性爱视频免费一区一A| 欧美综合站| 天美一区在线| 老熟女乱伦片| 99爱在线视频| 欧美人人天天网| 777超碰| 一起草日韩| 中文字幕日韩国产传媒欧美精品| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 欧美亚洲中文字幕| 日人妻视频91| 大香蕉伊人在线成人AV在线观看| 天天综合~91| 久久xx| 亚洲综合贴图91 | 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | a片在线播放| 99re国产中文字幕| 98超碰日本| 岛国片在线视频网站| 婷婷伊人| 日本幼女18+| 91成人精品在线播放| 蜜桃视频一区二区三区在线观看| se..亚洲欧美| 久久超碰爱| 日韩射图| 毛片电影一区二区三区| 欧美日韩美女精品久草一区二区三区| 中文字幕精品一区二区精| 欧美爆操91| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 校园春色综合网| 丁香五月天啪啪| 玖玖爱伊人玖玖爱| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 啊啊啊啊嗯嗯在线久久久| 懂色AV蜜臀无码精品APP| 久久国语| h无码动漫在线观看| 人妻少妇精品久久久| 免费av高清无码| 日韩久久超碰色| 免费岛国一级片| 操人妻丝袜高跟| 91成人18| 蜜臀精品1区2区| 成人小说另类在线| 色天堂综合| 激情网色| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 99色婷婷中文字幕乱色| 国产精品宅男免费| 日韩AV噜噜噜一区二区三区四区| 综合自拍| 日日超碰亚洲| 天天射夜夜| 一级A片女人高潮叫床| AV久日| 婷婷色综合| 国产品精品自在在线午夜免费 | 岛国片在线观看视频亚洲| 欧洲亚洲人妻无码高清久久三区四区| 色五月av| A 在线网址| 在线观看啊啊啊啊啊| 日本三级中国三级99人妇网站| 亚洲熟女综合一区二区| 插老姨肥穴| 熟女人妇一区二区三区| 国产剧情在线| 中文久久96| 婷婷五月成人| 91av一区二区在线观看| 蜜臀久久99'精品久久久| 97福利视频| 欧洲黄色网| 精品视频久久区| 人成午夜免费大片| 天天日天天干天天操| 久久免费99精品久久久久久| 亚洲有码 视频一区| 午夜福利合集| 欧美日韩国产色图在线| 久久精品99久久久久久| 久久久久久一日韩字幕无码| 午夜精品久久久99| 亚洲中文字幕熟女| 日本一区二区三区精品| 精品国产Av无码久久久伦古装| 六月丁香网| 99热在线只有精品| 一起草av| 97精品久久| 中文字幕国产精品1区| 人妻少妇色综合| 新怡红院| www.色五月| 天天亚洲| 久久久久精| 97视频在线| 久久久久久大| 高清国产精品无码| 欧美一级专区免费大片| 最近2019中文字幕国语免费版| 1000午夜黄色| 午夜黄色免费在线观看| 乱操9999| 97天堂| 东京热毛片177b2viP| 日韩成人免费电影| 超碰95| 久久大香蕉手机高清| 蜜臀99久久精品久久久久| 天天操av懂色| 日本色色视频网站| 97AV在线免费观看| 欧美v亚洲v日韩v最新在线二区 | 欧美五十路熟| 蜜臀无码一区二区| 欧美成人一区二区三区在线播放| 97草草| 色爱综合网| 九热中文字幕| 欧美成人精品一区二区三区| 精品欧美А∨无码黑人大荫蒂 | 超碰69| 中国国国产一级特黄毛片| 一区二区三区四区在线不卡| 亚洲激情网一二三四区| 91东北熟女| 日韩一级二级在线| 亚洲中文国际强奸字幕| 四虎av在线| 欧美色棕合| 操婢日韩| 91精品少妇搡搡搡| 九九内射在线| 婷婷丁香九月| 自拍啪啪视频| 日韩三级久久久| 久久这里是精品| 熟女91网| 婷婷亚洲中文字幕在线| 韩国午夜理伦三级好看| 亚洲图片91| 一区麻豆 高清中文字幕| 少妇干B| 神马麻豆福利院| 曰本精品久久久| 精品人妻美妇91job| 日韩大香蕉AV影片| 精品国产一区二区三区久久久蜜臀 | 精品四五区| 日韩成人精品| 中文字幕av丝袜| 久久色情| 亚洲综合另类小说色区亚洲成av人片在www | 亚洲午夜免费狠狠干| 亚洲国产成人精品999| 久久久精品久久| 久久国产三区| 黄片在线免费在线观看| 国产精品免费久久久久久久久久| 日本九九久久99| 国产剧情一区在线观看| 欧美成人AⅤ大片在线观看| 亚洲性高潮| 夜夜爽爽夜夜精品视频| 天天综合在线4| 亚洲天堂人妻熟妇视频| av毛片aaaaa免费看| 亚州国产成人精品女人久久| 国产人伦精品一区二区三区 | 五月丁香综合啪啪| 秋霞无码av鲁丝片一区| 亚洲综合电影| 日韩精品资源| 欧美激情亚洲情色| 日本啊啊啊啊啊视频| 99热99在线| 无码av永久免费专区网站| 亚洲精品97| 中文字幕av一区二区三区人妻少妇 | 天天α片| 大香蕉手机在线视频| 亚洲欧洲网站免费观看| 亚洲一级性爱视频免费看| 啊啊啊啊网站| 91综合网在线| 激情婷婷丁香网| 东京热大香焦| 欧洲与亚洲欧美精品中文字幕| 伊人亚洲国产一成人久久精品,久久| 特级丰满少妇一级AAAA爱毛片| 97色伦97色伦国产欧美| 无码人妻一区二区三区四区老鸭窝| 亚洲AV色图一区| 色九九九综合| 日韩精品高清资源在线| 青娱乐av在线| 99国内精品| 欧美在线干| 亚洲夜夜欢无码一区二区| 亚欧日韩成人| 立川理惠被中出无码| 国产色产精品在线观看| 国产97在线 | 亚洲| 91色婷婷综合久久中文字幕二区| 日本ZZ高免费A级视频| 青青草无码视频| 国产一区在线观看无码AV| 久久精品一区二区一8| 亚洲精品99999| 亚洲天堂男人的天堂| 亚洲 在线| 春色91| 欧美色青| 97久久久| 中文字幕AV乱伦| 蜜桃狠狠色伊人亚洲综合网站| 性色A∨91| 欧美偷拍| 老熟女乱伦片| 日韩三A大片在线观看| 国产精品久久久 | 日韩啪啪啪啪啪| 超碰是碰在线观看| 一区二区三区 日韩欧美| 日本熟女免费視颖| 精品人妻美妇91job| 免费强奸av| 自拍视频一区在线观看| 凹凸视频在线观看伊人| 日韩欧美经典在线观看| 电影69乱码96| 亚洲码和欧洲精品激情系列| 天天日美女的B| AV色图| 四虎在线视频| 亚洲毛片基地专区| 色婷婷六月丁香七月婷婷| 亚洲制服aⅴ中文字幕| 亚洲欧洲日韩国产自在线| 婷婷伊人綜合中文字幕| 丝袜熟女2P| 中文字幕免费观看| 欧美人妻熟女在线| 天天综合91| 欧美1区二区三区公司| aⅴ日韩成人电影av在线免费看av大全 | 立川理惠加勒比无码| 久热99| 欧美另类色| 精品人妻一二三四区视频| 九九久久国产精品怡红院| 91综合网站| 艹精品| 久久久国产成人一区二区三区在线| 9久综合网| 九九热视频这里只有精品| 国产热av| 91在线免费精品视频| 草草影院最新网址| 九九亚洲视频| 日韩情色AV| 色呦色呦色精品| 午夜精品久久久久久久第一页按摩| 欧美日韩午夜精品一区二区三区| 不卡一区二区日本视频| 丁香激情网| 韩日精品福利视频一区不卡在线免| 无码人妻毛片丰满熟妇精品区| 97AV在线观看| 欧亚乱色熟女一区二区| 国产人妻精品久久久一区二区三区 | 色色香蕉| 亚洲精品久| 色拍偷亚洲| 搡老熟女免费视频| 999岛国大片| 99操视频| 啊啊啊啊好疼视频| 亚洲成人激情小说视频| 99天堂网| 97在线观看免费视频l| 丰满人妻-区二区三区免费看| 强奸乱伦AV网站| 志村玲子视频一区二区| 少好三P| 五月丁香六月综合缴清无码| 99精品久久久久久久婷婷蜜桃| 久久久熟妇熟女国产| 欧美综合色图网| 色色网91| av婷婷色网| 快播久久人人aV| 欧美日韩性爱无码| 蜜奶av| 日本不卡一区二区| 97色色婷婷| 精品一区二区三区蜜桃臀www| 妇女性内射冈站HDWWWCOM| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 日韩精品人妻中文字幕久久久| 天天干18禁| 日韩黄色一区二区三区| 欧洲精品久久| 日本一区二区三区午夜观看| 亚洲性爱高潮影院| 外国免费性情大片| 强奸a片网| 色哟哟精品1精品2| 久久精品中文字幕无码l| 久久蜜桃综合网| 亚洲第一页第二页激情| 黑操B| 欧州91高潮| 色综合五月天| 麻豆一区二区三区在线看 | 亚州色阁| 欧美日韩国产中文精品字幕自在自线| 欧美日韩国产男人| 99久久精品欧美国产| 欧美少妇第一页| 日韩免费一级性爱视频| 日日干日日操五月天伦理视频| 天天综合亚洲综合| 在线黄页看毛片| 啊啊啊想要| 欧美有码激情视频一区二区三区| 骚女天天综合网| 精品一区二区啪啪啪| 日本媚薬中文字幕在线| 亚洲 91 在线| 最新国产精品| 天天α片| 欧美黑人精品在线播放| 97情超碰色| 日本人人操人人操| 91欧美少妇| 亚洲丝袜色| 日韩亚洲欧美中文字幕| 久久一区,青青青青草视频在线播放| 26UUU欧美日本| 国产精品久久久亚洲一区| 蜜臀久久99精品久久久电影| 啊啊啊啊啊操我视频| 欧美人人曰人人操人人射射| 97超碰免费人人性爱| 可以在线观看AV的网站| 91熟女视频网| 日韩人妻精品久久久久| 日韩成人性日韩成人性爱视频在线免费观看 | 操一区| 日本操逼二区| 黄页网站成人免费| 婷婷四五区| 一个人免费视频观看在线WWW| 99蜜桃臀久久久欧美精品网站| 久久久久久日韩| 裸体美女久久久| 亚洲AV无码国产成人| 1024精品在线| 丁香婷婷激情五月天无毒不卡| 天天谢天天干| 欧美天天影院| 久久综合乱子伦国产免费| 国产精品久久久久久久久久久久| 欧美 日韩 另类 亚洲| 高跟丝袜AV专区国产| 我要色综合网| 国产精品密臀网在线观看| 青青草天天亲夜夜操网| 91丨人妻丨国产丨丝袜| 韩日男人的天堂| 91强奸乱轮| 97超碰色情| 中文字幕精品乱码| 色情综合| 五月天婷婷在线看| 国产尤物在线三区| 久草资源在线视频官方总站日韩丝袜美腿 | av网站免费线看| AV天黑人| 97视频7| 日韩成人电影AV| 在线岛国新天堂8| 婷婷激情四射| 亚洲图片 激情小说| 熟女丝袜视频| 亚洲九月丁香| 无码一区二区精品视频久久久春药 | 色香AV| 亚洲AV不卡在线观看| 欧美亚涩| 婷婷激情综合网| 激情 欧美 亚洲 小说| 国产精品乱码久久| 欧美高清在线| 91路www| 人人妻人人操人人乐| 91天堂色男人的天堂| 免费日韩黄片| 中文字幕乱亚洲美女精品一区| 激情四射婷婷六月天| 无码人妻一区二区一牛影视| 国产成人网站在线观看| 人人贴人人摸| 1769一区| 国产熟女一区二区| 五月天欧美色图| 亚洲色91C| 日韩美女久久一区二区三区| 五月激情小说| 亚洲精品人妻吞精av| 欧美亚洲色图另类国产| 激情小说亚洲| 美女诱惑久久| 国产精品久久久午夜夜伦鲁鲁| 精品久久在线区一区| 久久久一级| 999国产精品999| 福利在线黄片| 性爱乱伦视频免费| 7777奇米影视久久| 日韩激情电影中文字幕| 黑人猛交| 高清无码人妻久久久一区二区三区aⅴ| 天天干夜夜操一区二区| 亚洲资源网| 男人的天堂激情| 欧洲天天在线| 久热免费视频| 日韩久久三区| 狠狠穞A片一區二區三區| 国产又爽又黄| 精品国产久热在线观看| 欧美日韩国内不卡| 婷婷视频在线免费观看| 国产高清MV操逼视频| 狠狠中文字幕| 无码日韩人妻av一| av日韩国产一区二区| 岛国免费黄色网址| 免费一级性爱久久| 飘花国产午夜精品不卡| 欧美黄色大片在线观看 | 成年女人18级毛片毛片免费观看| 亚洲精品无码久久AV| 乳欲人妻办公室奶水| 日逼视频日本| 黄片无码在线制服| 操逼逼无码| 久久久中文| 欧美99| 欧美美女自慰一区二区三区| 天天日天天插| 九九天堂| 国产嫩草精品A88AV在线| 91处女视频在线观看| 午夜精品久久久久| 熟女网站最新| 日曰骚久久精品| 黄色工厂这里只有精品| 国产视频人人网| AVE乱伦| 久久黄色视频一区二区三区 | 国产女人操逼视频| 国产女性无套 免费观看| 丁香六月婷婷| 丝袜夫妻自拍| 九九九精品一区二区无码| 91视频综合在线| 国产午夜精品一区二区三区牛牛| 91亚洲网站| 午夜舔阴达高潮视频免费看| 亚洲A曰本VA欧美VA视频| 91社区拍啪人妻| 国产高清无码一区二区三区四区皇冠| 免费精品99| 人人色人人射人人妻| 亚洲男人的天堂在线看| 久久精品无码不卡| 色婷婷一区二区三区久久| 12一15性XXXX粉嫩国产| 成人26uuu| 操逼视频亚洲| 六月丁香啪啪| 99自拍B亚洲 | 国产成人精品网站| 欧美日韩午夜精品一区二区三区| 亚洲天堂AV在线播放| 激情五月激情综合网| 免费农村成人少妇人妻Aa一区二区视频| 情色五月天网| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 国产精品日韩在线一区| 日本www操操操| 尻女朋友一夜| 大香蕉青青9| 91日韩| 国产精品视频一区二区三区八戒| 日韩另类色图| 精品一区二区三区四区外站 | 五月婷婷AV| 骚逼高潮久久精品| 亚洲色情在线影视| 色吧91| 日韩丰满熟妇| 久久久久久中文字幕中文字幕最新| 婷婷15月天青娱乐| 92一区二区| 国产精品亚洲天堂网址| 全球成人中文在线| 久久熟妇五十路一区| 插B在线观看| 日本中文字幕不卡视频| 搡老熟女老女人老熟妇免费视频| 长长久久88视频| 欧美色综合图片| 久久69| 日欧操屄视频| 99日免费视频中文字幕| 91精品国| 日韩乱伦影音先锋| 丰满搜索结果 -第18页- 久久高清无码 | 伊人国产成人av网站| 伊人色综合网电影| 欧美72网页| 亚洲啪啪综合?v一区综合精品区| 美女一区二区国产精品| AV天堂男人的天堂| 中文乱码字幕观看视频| 在线国产一区二区av| 大香蕉欧美伊| 国产高清自拍| 五月丁香婷婷综合| 国产欧美日产一区二区三区 - 国产欧美日 | 成人三一级一片aaa| 丝袜狠狠草尤物人妻av91| 91狠狠综合久久| 在线看片国产精品每日更新| 亚洲自拍一区夜夜操| 2017天天拍大香蕉| 色婷婷五月天| 精久久久| 国产久久av| 久久綜合很很很| 无码动漫av中文字幕| 丁香六月激情| 欲色综合| 久久曰曰| 亚洲少妇视频| 一区二区三区视频在线观看免费| 成人精品视频| 黄片视频,下载| 樱花草社区www中国| 国产精品不卡少妇白| www.夜夜| 日韩人妻丝袜中文字幕| 丁香色婷婷| 97超碰9| www.色综合| 综合少妇网| 色官网在线| 欧亚 另类 久| 日韩AC| 后入综合久久| 日韩人妻无码专区| 99999久久精| 丁香五月婷婷基地| 国产馆| 大香蕉碰碰| 青娱乐啪啪视频| 好淫网一二三视区| 91人妻在线视频| 亚洲成人一二三区| 最新国产精品| 五十路熟女工口 | 国产九月婷婷| 日韩无码极品| 欧美1727免费观看视频| 欧美色图色综合| 九九英色视频| 亚洲av综合色区图片亚洲| 中文字幕诱惑制服人妻丝袜美丝袜美 | 欧美一区二区三区另类精品| 99re在线视频国产| 亚洲囯产精品女人久久久| 日本孕妇孕交| 一块操欧美| 超碰人妻久久| 绯色AV粉色AV蜜臀AV| 五月天婷婷在线看 | 久久久久久免费电影| 色婷亚洲五月在线观看| 91精品人妻一品二品三品| 看看小穴| AV一起草在线| AV在线播放网址| 三级三久久线久久99久目本WW| 欧亚日韩中文在线| 男人的天堂色偷偷青青草视频婷婷网| 国产精品亚洲无码| 噜噜噜噜天天狠狠| 香蕉在线一区二区三区| 五十路六十路素人熟女| 免费成人在线熟妇网| 熟女乱伦二区| 超碰95| 欧美影音在线| 亚洲天堂区| 亚洲码在线中文在线观看| 久久宗合亚洲| 91狠狠综合久久| 超碰在线人妻中文字幕| 国产青青美女玩逼视频| 久久综合九九| 久96热在线观看视频| 91美女国产在线| 精品人妻1237| 中文字幕一区二区三区高清| 亚洲成人AB| 日本精品88888888| 色官网在线| 精品欧美老熟女一二区| 欧美色图小说综合| 丁香五月天堂网| 天天躁日日躁xxxxx| 亚洲不雅视频1区二区| 啊啊啊97视频| 亚洲色图超碰在线| 亚洲成人性爱网站在线播放| 欧美日韩久久精品爱爱| 日日橹狠狠爱欧美超碰| 一区二区三区精品黑丝白丝酒店对鸡 | 欧美 日韩 亚洲 春色| 亚洲自拍小说| 欧美亚洲日韩16色| 亚洲色图久久成人| 日韩国产乱子伦App| 亚洲一区日韩精品中文字幕| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 欧美黄片免费在线观看视频| 久久久久夜夜夜夜| 素人伊尹大香蕉免费下载视频| www.操| 日日干夜夜干| 极品美女福利在线观看| 久久透逼视频| 美女网站91| 青青草五月份天| 欧美精品久久| 炮色五月| 九九内射在线| 国产家庭乱伦网址| 家庭乱伦国产| 国产精品直播在线观看直播| 欧美九九九| 九九人妻| WWW.加勒比人妻一区不卡.com| 少妇高潮99p| 国产小u女在线观看| 亚州操逼图| 99国产在线 精品 视频| 99热| 东京热天堂网| 欧美综合色| 欧美色图自拍| 91青青在线视频| 好舒服视频| 亚洲男人天堂2012| 情侣开房子拍 日韩无码 女的很漂亮| 日本性爱欧美性爱| aaa亚无码专区| 欧美性第1页| 久久超碰av在线| 91爱看| 老女人老91妇女老热女| 亚洲 欧美 小说| 夜夜嗨AV蜜臀av| 不卡九肏| 少妇国产不卡| 久久色一区| 久久婷婷在线观看视频| 91久精品| 欧美日韩资源在线| 人妻久热在线| 91在线综合网| 九九九综合精品| 精品熟女一区=区三区| 日韩精彩免费| 天天操天天射青青草| 蜜桃精品一区二区三区ww| 色一射色一射| 亚洲最大黄网| 丰满搜索结果 -第18页- 久久高清无码 | 视频一区二区免费在线| 欧美精品成人一区二区在线观看 | 欧美日韩一干二干| 性色av一区二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美熟妇人体| 日本999精品视频| 96国产污污污丝袜| 伊人四虎综合| 欧美色图自拍| 蜜臀久久久99久久久久 | 97在线免费| 亚洲se91| 综合影院永久入口国产| 日本一区视频在线观看| 在线岛| 人人干人人操人人..com| 999岛国大片| 五月丁香成人网| 久久人妻97久久久久久久| 久久久精久久久| 久久99草| 97色操| 亚洲全色网| 亚洲一区二区三区不卡国产欧美| 黄页视频网站野外| 欧美丰满熟妇XXXX性ppX人交| 欧美激情五月天| 夜夜夜久久| 麻豆精品三区视频| 国产白丝网站| 九九九久久久| 91在线视频免费播放| 91超碰人人操| 青青草日本无码| 亚洲男人天堂2013| 人澡逼| 男人久久天堂| 乱伦一区二区三区‘| 精品在线观看视频在线| 96精品在线| 91 亚洲情侣偷拍 久久| 欧美 日韩第一性色| 国产老太乱伦一区| 太久视频| 日韩三级视频一区二区三区| 日韩钢筋无码高清啾啾啾| 骚逼自拍99| 欧美色999| 偷拍自拍在线视频观看| AV大香蕉| 老女人老91妇女老热女| 美女91在线| 日本三级A片网站com| 国产尤物AV尤物在线观看不卡| 色眯眯av| 亚洲综合97| 一区二区三区黄色片a| 99综合视频| 91l欧美在线| 999色欧美中文字幕| 成人一二| 久久久 国产精品| 亚洲第一页欧美| 欧美综合色,www| 无码精品久久| 国产亚洲一黄| 欧美黑人91| 久久永久无码人妻视频| 精品人妻美妇91job| 91精品黄在线观看| 日韩精品99久久久久久中文字幕| 中韩中文字幕在线观看| 免费av在线播放二区| 蜜桃臀av在线观看| 九草九九九| 久久狠狠色噜噜狠狠狠狠97| 亚欧性爱在线无码| 亚洲诱惑| 欧美97在线欧| 婷婷AV一区二区三区| 日本男人插女人的逼黄色| 青青青青青手机视频| 亚洲五码一区二区三区| 久久久久久久久九九久孕交| 久热精品在线| 国产黄色 A 片免费看| 操人妻逼91| 一起草视频在线| 大香蕉五月天婷婷| 夜夜免费视频| 操逼逼一区视频| 久久免费中文字幕在线观看| 久久精品噜噜噜成人看免欧美大片| 99re热有精品视频国产| 91久热这里只有精品| 78m成人视线| 人人干人人操人人..com| 黄日韩| 亚洲成a人v欧美综合天堂下载| 中文字幕一区日韩精| 啊啊啊啊啊舒服| 国产精品久久99日日| 欧美性暴力猛交XXXX| 国产精品不卡av免费在线观看| 国产欧美日韩在线观看麻豆传媒公司| AV久日| 成人福利视频网| 99re在线视频这里只有精品| 日韩精品一区二区高清|