久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

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í)序與避坑指南 從買來(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)從零寫一遍包括為什么用 GPIO 模擬時(shí)序、命令字節(jié)的坑、BCD 碼換算、寫保護(hù)和時(shí)鐘暫停位把你可能遇到的坑提前踩平。適合正在學(xué) STM32、想搞懂串行時(shí)序、或者需要給手頭項(xiàng)目加一個(gè)掉電不丟時(shí)間的實(shí)時(shí)時(shí)鐘的開發(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ù)記錄儀之類的項(xiàng)目非常有用。驅(qū)動(dòng) DS1302 對(duì)你理解 STM32 的 GPIO 操作也很有幫助。它用的是三線串行接口CE、SCLK、IO看起來(lái)像 SPI但實(shí)際時(shí)序有自己的一套。手寫這套驅(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)真走一遍以后再遇到類似的串行器件上手速度會(huì)快很多。1.2 GPIO 模擬 vs 硬件 SPI我為什么這樣選DS1302 的三線接口在某些代碼里被歸類成“類 SPI”也有人直接用硬件 SPI 去驅(qū)動(dòng)過(guò)。但從數(shù)據(jù)手冊(cè)的時(shí)序來(lái)看它跟標(biāo)準(zhǔn) SPI 并不是一回事DS1302 需要 CE 拉高作為一次傳輸?shù)拈_始數(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í)序圖定位非???。DS1302 的時(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í)序與寄存器最容易翻車的三個(gè)關(guān)鍵細(xì)節(jié)2.1 命令字節(jié)、LSB 和讀寫時(shí)序的關(guān)鍵點(diǎn)DS1302 的每次操作都是從 CE 拉高開始然后主機(jī)通過(guò) IO 發(fā)送一個(gè)命令字節(jié)再要么寫一個(gè)數(shù)據(jù)字節(jié)要么讀一個(gè)數(shù)據(jù)字節(jié)最后 CE 拉低。命令字節(jié)的格式是固定的bit7 固定為 1bit6 用于區(qū)分操作對(duì)象0 表示操作時(shí)鐘寄存器1 表示操作內(nèi)部 RAMbit5 到 bit1 是寄存器地址bit0 表示讀或?qū)? 寫、1 讀。另一個(gè)容易忽略的地方是數(shù)據(jù)是 LSB first也就是低位在前。很多從 SPI 轉(zhuǎn)過(guò)來(lái)的人習(xí)慣性先發(fā)高位結(jié)果一上來(lái)就讀到完全錯(cuò)亂的數(shù)據(jù)。寫一個(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)為輸入。如果切換慢了芯片開始輸出數(shù)據(jù)時(shí)你的引腳還在驅(qū)動(dòng)總線兩邊打架輕則讀到錯(cuò)誤數(shù)據(jù)重則可能損傷 IO。這也是我為什么在底層函數(shù)里把“釋放 IO”放在讀字節(jié)循環(huán)前面。2.2 寄存器地址表與 BCD 碼換算DS1302 的時(shí)鐘寄存器從秒到年寫地址和讀地址相差 1規(guī)律非常明顯。我整理了一張常用地址表寄存器寫地址讀地址說(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寫保護(hù)0x8E0x8Fbit7 置 1 禁止寫入涓流充電0x900x91用于給備份電容充電時(shí)鐘突發(fā)0xBE0xBF一次連續(xù)讀寫全部時(shí)鐘寄存器RAM 突發(fā)0xFE0xFF一次連續(xù)讀寫 31 字節(jié) RAM芯片內(nèi)部的時(shí)間數(shù)據(jù)全部用 BCD 碼保存也就是說(shuō)一個(gè)字節(jié)的高四位表示十位低四位表示個(gè)位。比如秒寄存器里存 0x45就代表 45 秒而不是十進(jìn)制的 45 對(duì)應(yīng)的 0x2D。所以讀寫時(shí)間時(shí)必須有十進(jìn)制到 BCD、BCD 到十進(jìn)制的轉(zhuǎn)換函數(shù)。這個(gè)換算本身不難但漏掉任何一個(gè)方向都會(huì)讓你調(diào)半天。2.3 寫保護(hù)位、時(shí)鐘暫停位和 24 小時(shí)模式的坑寫保護(hù)是新手第一個(gè)容易踩的坑。DS1302 上電后寫保護(hù)位不一定處于關(guān)閉狀態(tài)如果你不先把寫保護(hù)位寄存器0x8E的 bit7 清零那么所有寫入操作都會(huì)被忽略時(shí)間怎么都寫不進(jìn)去。很多人調(diào)了很久“寫不進(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 清掉再寫回去時(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é)讀寫到時(shí)間封裝3.1 引腳定義與 GPIO 初始化開漏模式的便利我先說(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 是雙向口我選擇了開漏輸出模式并開啟內(nèi)部上拉配合外部 4.7k 上拉電阻。為什么用開漏因?yàn)?STM32 的開漏輸出模式下輸出數(shù)據(jù)寄存器寫 1 時(shí)引腳處于釋放狀態(tài)此時(shí)可以把這個(gè)引腳當(dāng)輸入用直接讀 GPIO 的輸入數(shù)據(jù)寄存器就能拿到外部電平。這樣 IO 方向切換不再需要重新配置 GPIO 模式寫數(shù)據(jù)時(shí)寫 0 和寫 1讀數(shù)據(jù)時(shí)寫 1 釋放總線然后讀穩(wěn)定又干凈。如果使用推挽輸出理論上寫數(shù)據(jù)更快但讀取前必須把引腳從輸出模式切換到輸入模式切換時(shí)機(jī)不對(duì)很容易產(chǎn)生毛刺。對(duì)比下來(lá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 寫 1 釋放總線避免復(fù)位后引腳狀態(tài)不確定拖住總線。3.2 底層讀寫一個(gè)字節(jié)實(shí)現(xiàn)和原理看代碼前先明確一下 DS1302 的位時(shí)序。寫字節(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)開始直接讀 IO 再移位也可以但要保證第 0 位落在 bit0而不是最后變成反序。我習(xí)慣先移位再置位配合 LSB first 的特性最后自然得到正確的字節(jié)。延時(shí) 1us 是故意的。DS1302 的 SCLK 最快大概到 2MHz半個(gè)周期就是 250ns 左右不延時(shí)也能跑。但實(shí)測(cè)中如果 STM32 主頻較高、代碼優(yōu)化開得激進(jìn)沒(méi)有延時(shí)的時(shí)鐘沿翻轉(zhuǎn)容易超出芯片規(guī)格導(dǎo)致偶發(fā)讀取錯(cuò)誤。加 1us 延時(shí)后時(shí)序余量很充足又不影響實(shí)際體驗(yàn)屬于“花小錢買個(gè)穩(wěn)”。3.3 寄存器讀寫與時(shí)間結(jié)構(gòu)封裝底層寫好之后寄存器讀寫就很直白了。注意我的接口約定所有寄存器參數(shù)統(tǒng)一使用偶數(shù)地址也就是手冊(cè)里的“寫地址”函數(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)閉寫保護(hù)最后一行為可選的重新開啟寫保護(hù)。如果你打算頻繁校時(shí)可以留著寫保護(hù)打開防止其他代碼誤操作時(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ì)重置。正確做法是只做初始化清除寫保護(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 上拉。如果用開漏模式但沒(méi)有外部上拉只是依賴 STM32 內(nèi)部上拉讀數(shù)據(jù)時(shí)總線可能被拉到一個(gè)不穩(wěn)定的中間態(tài)尤其在 IO 方向切換的瞬間。所以外部 4.7k 上拉強(qiáng)烈建議要加。第三查 SCLK 延時(shí)。代碼里的 1us 延時(shí)是否真的生效。有些工程開了 O3 優(yōu)化空循環(huán)可能被編譯器優(yōu)化掉一部分導(dǎo)致時(shí)鐘翻轉(zhuǎn)過(guò)快。第四查 CE 時(shí)序。每次讀寫都必須 CE 高電平開始、低電平結(jié)束。如果 CE 一直懸空或者沒(méi)有正確拉低芯片的傳輸狀態(tài)會(huì)混亂。第五查命令字節(jié)。最簡(jiǎn)單的方法是買個(gè)十幾塊錢的邏輯分析儀抓一下 CE、SCLK、IO 三根線對(duì)一下命令字節(jié)是不是 0x80 寫、0x81 讀這樣的正確序列。沒(méi)有邏輯分析儀的話可以用 GPIO 翻轉(zhuǎn)法在讀寫函數(shù)前后翻轉(zhuǎn)一個(gè)調(diào)試引腳再用示波器看間隔。我這里遇到過(guò)一次比較隱蔽的情況讀出來(lái)全是 0xFF追查發(fā)現(xiàn)是 IO 引腳在初始化時(shí)被配置成了推挽輸出寫數(shù)據(jù)時(shí)正常但讀數(shù)據(jù)前切換輸入模式?jīng)]有成功。換成開漏模式后問(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秒針就開始走了。如果清 0 之后走了幾秒又停住可能是代碼某處又把秒寄存器寫成帶 CH 位的數(shù)據(jù)比如沒(méi)有掩碼直接寫回了一個(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 必須寫成 1010 才會(huì)使能充電中間兩位選擇二極管數(shù)量低兩位選擇充電電阻。一個(gè)常見(jiàn)配置是 0xA5代表一個(gè)二極管加 2k 歐姆電阻也有模塊出廠配置成 0xA6 或 0xA7。如果這個(gè)寄存器的 TCS 位不是 1010涓流充電是關(guān)閉的。我自己踩過(guò)充電相關(guān)的一個(gè)坑一開始為了省事直接寫 0xA5結(jié)果 0.22F 的超級(jí)電容很快就充滿了但芯片時(shí)間正常。后來(lái)?yè)Q了大容量電容才發(fā)現(xiàn)如果電容太大2k 電阻的充電電流可能偏大需要根據(jù)電容容量調(diào)整電阻檔位。所以沒(méi)什么特別需求時(shí)不要把涓流充電開得太激進(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ù)記錄儀這類對(duì)時(shí)間一致性有要求的設(shè)備建議直接用突發(fā)讀。5.2 31 字節(jié) RAM 的妙用和擴(kuò)展玩法DS1302 除了時(shí)間寄存器還有一塊 31 字節(jié)的 RAM地址從 0xC0 到 0xFD寫地址是偶數(shù)讀地址對(duì)應(yīng)加 1。這塊 RAM 在電池供電時(shí)會(huì)保持?jǐn)?shù)據(jù)非常適合存放一些掉電不能丟的小參數(shù)比如設(shè)備編號(hào)、校時(shí)標(biāo)志、上次關(guān)機(jī)時(shí)間。使用方式就是普通的寄存器讀寫只是地址范圍換一下。我自己的擴(kuò)展玩法是做一個(gè)“開機(jī)判斷”首次上電時(shí)讀 RAM 里的一個(gè)標(biāo)志字節(jié)如果不是預(yù)設(shè)魔數(shù)就認(rèn)為模塊從未初始化自動(dòng)執(zhí)行一次 set_time并把魔數(shù)寫入 RAM。這樣既不會(huì)每次開機(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)單、入門友好。這塊芯片雖然老但它把串行時(shí)序、雙向 IO、寄存器操作這幾個(gè)嵌入式基本功都串了起來(lái)。我第一次調(diào)通的時(shí)候看到串口打印出穩(wěn)定的秒數(shù)心里還是挺有成就感的。如果你也卡在某個(gè)讀數(shù)的怪問(wèn)題上試著用邏輯分析儀抓一下波形很多時(shí)候一眼就能看出問(wèn)題。代碼我已經(jīng)整理到開源倉(cāng)庫(kù)里對(duì)照這篇筆記看應(yīng)該能把 DS1302 在 STM32 上順利跑起來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天操人人操狠狠插| 青青草导航在线视频| 久久78| 夂久色| 欧美人体性爱互联网第一页婷婷日本| 日本精品国产视频| 综合熟女| 天天综合网日韩7799| 亚洲色欧| 欧美国产操逼| 日本高清_区二区三区| 亚洲熟女乱综合一区二区三区| 老司机射| 老鸭窝成人免费毛片视频| 内射中出日韩在线观看视频| 婷婷五月丁香五月| 欧美成人午夜免费福利785| 久久婷婷成人综合色怡春院| 色综合久久夜色精品国产天堂| 国产精品亚洲一区二区三区四区| 91艹B视频| 欧美亚洲图片| 91精品久久久久久| 亚洲男人天堂2| 大吊色| 97人妻色| 婷婷91| 国产精品美女久久久久AⅤ国产馆| 精品超碰色| 九九视品黄色| 国产免费一区二区三区最新不卡| 国产视频不卡在线观看| 人人模人人看| 日韩欧美女求操每天更新| 激情露脸爱| 中文字幕在线高清男人的天堂| 1769一区| a片偷拍视频| 嗯嗯啊啊啊好爽| 东京热熟女亚洲视频网站| 久久国产精品91| 婷婷五月综合激情| 五月婷婷深深爱| 韩国一级做A片免费的| 欧美综合国产精品久久丁香| 中文字幕78| 欧美激情性爱视频网站| 日韩中文字幕2020| 欧美在线55555| 人人干黄色| 视频一区二区免费在线| 亚洲av无码成电影在线播放| 野狼福利社区| 性色AV网站| 久久久四区| 日本在线999| 超碰97导航| 九七毛片九九毛片| 色 亚洲 91| 午夜呻吟欧美| wwe 天天干.com| 久久久中文版| 日韩一级二级三级免费看完整版国语版 | 久日91在线| 台湾肥佬网一区二区三区| 精品妇女一区二区三区| 欧美精品人妻视频| 啊操爽品善一区二区三区| 少妇色综合| 91精品国产91久久久久久久久久久久| 超碰人人干天天射| 国产极品馒头逼| 射久久| 五月天亚洲色图| 性色aV一区二区三区噜噜| 囯产精品久久久久久久久久二区三区| 亚洲无992tv| 久久精品国产精品一区| 亚洲精品第一| 尹人大香蕉视频在线| 日韩乱插| 五月天婷婷欧美三区| 东京热激情视频一二三区| 日韩内射视频| 久九九九九九九九热| 国产久久久久久| 国产Av超碰| av一区二区三区 中文| 六月色色| 97视频900| 伊人亚洲综合| 亚洲丝袜综合| 久久免费精品视频免一| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 尤物av网站免费在线播放| 51国产午夜精品视频| 人妻一二三区| 特级大荫道BBwBBwBBW| 久久久久久波多野吉衣高潮| 色综合1991| 2024年最新色情网站在线观看 | 99色天堂| 欧美天堂亚洲电影院一区在线播放| 九九九九九九九九九九九蜜桃| 91女日逼| 日韩性爱再线视频| 中文字幕亚洲欧美在线不卡| 伊人久大| 性色av婷婷久久一区二区点复制| 国产SV一线| 亚洲天天自拍| 色色色欧美| 躁躁日曰躁2020| 欧美一级二级三级| 99热在线观看| 中文字幕免费看| 精品人妻一二三| 中文字幕亚韩| 91痴汉| 欧美不卡在线一区二区| 少妇内射www在线观看视频| 精品一区二区三区国产| 亚洲一区中文字幕一区| 插插综合网天天影视网| 久久黄色性爱视频| 亚洲日本男人天堂网| 中文字幕精品亚洲熟女| 簧片免费看视频| 欧美猛交黑寡妇中文字幕| 亚洲综合首页| 猛交交| 日韩电影中文字幕| 国产中文大片资源中文字幕| 99RE在线视频精品,这里只有精品| 亚洲影视综合| 99热97| 欧美 亚洲 第一页| 日本九九久久99播| 在线视频 亚洲精品| 91丨九色丨43老版熟女| 人妻熟女一区二区三区视频| 女人高潮大叫一级毛片| 老司机香蕉| 日韩免费高清大片在线| 欧美精品偷拍| 天天躁日日躁xxxxx| 嗯嗯啊啊用力视频免费| 亚洲国产一区二区日韩专区| 无码久| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美极品女人的天堂| 91无码人妻精品一区二区三区蜜桃| 国产高清成人传媒影视| 日韩精品一区二区人人人| 五月天啪啪| 久久久精品久久| 日本高清_区二区三区 | 99国产精品| 色av中文字| 久久的免费性爱视频| 亚洲人成色9999精品久久| 91色插| WWW4虎| 午夜亚洲WWW湿好大| 欧美色图片91| 国产强奸AV在线| 综合网久久| 日婷婷| 日韩9999| 激情视屏国产乱伦强奸| 猛猛干| 欧美色九九九| 日本肏逼视频在线观看| 欧美色图亚洲色| 大香蕉在线86| 国产一区免费午夜视频| 伊人欧美大香蕉视频| 另类小说五月天| 少妇三p| 欧美嫩性色| 日韩高清黄片| 久久禁| 中文字幕片| 熟女精品va中文字幕| 97操碰| 欧美天堂日韩三级国产传媒| 天天躁日日躁AAA片李宗瑞| 亚洲综合在线第一页| 麻豆精品A片免费观看| 国产精品熟女丝袜一区二区| 韩三级a视频在线观看| 亚洲精品久久一区二区三区蜜桃臀| 久热九九| 搡老女人老妇女AAA一VU麻豆| 熟女熟妇一区二区三区视频| 99九九久久| 99综合视频一体| av天堂精品久久| 蜜臀99精品国产高清在线观看| 1二区9| 亚洲天堂电影精品一区| 美国aaaaa一级黄片| 在线日韩日本亚洲国产| 少妇无码999| 久草综合视频| 十八禁网站在线| 国产女生在线| 噜噜噜在线视频| 91熟女视频| 神马九九九| 久偷拍| 久久精精区一区二区一蜜桃一区二区| 激情av| 人人模人人看| 91精品国产91久久青草| 免费在线看黄片av| 日本一级真人黄色性爱视频| 91人人| 亚洲AV永久无码精品成人调教| 成人资源中文字幕在线观看天天| 日本狂喷奶水在线播放212| 91精品在线播放| 国产十八禁视频| 夜夜操91744565| 口爆综合网| 亚洲男人天堂2019| 日韩精品在线观看网站| www色日本| 干婷婷综合网| 熟女乱伦二区| 六九九九| 久久综合18p| 国产欧美日韩女同性恋ww喷水精品| www黄片免费看com| 久久高清欧美国产| 中字乱伦AV| 婷婷AV一区二区三区| 强奸乱伦中文字幕AV| 国产高清26uuu| 国产精品ww久久| 91亚洲人| 92性色国产午夜福利在线661| 97超碰人人模人人拍人人| 久久专区| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 中文一区二区三区影院| 麻豆国产97在线| 美女裸体无遮挡永久免费观看网站| 美国日韩黄片| 欧美特大AA级黄片| 人人操人人摸人| 最近的最新的中文字幕视频| 日韩欧美视频青青| 丁香五月天久久精品视频一区二区三区| 中文字幕精品人妻丝袜| 亚州国产成人精品女人久久| 日韩成人小视频| 欧美在线天堂| 91久久精品中文字幕| 国产 日韩 另类 视频一区爱| 亚洲国产欧美中文永久| 久久国产精品一级二级三级| 97精品97| 天天综合-91入口| 五月丁香六月综合缴清无码 | 欧美日韩制服| 思思久热在线精品66| 日本成人在线不卡一区二区三区| 午夜超爽| 久久熟女人| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 亚洲天堂日本| 免费一二区| 欧美性爱91| 亚洲成a人片在线观看中文!!!| ?亚洲伊人伊成久久人综合网| 亚洲国男人的天堂| 亚洲综合色在线| 97超碰美女| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 蜜臀在线看片| 日韩精品中文字幕一| 九九九九九九亚洲| 欧美超碰在线| 五月综合久久| 日韩情色一区二区| 99热这里都是精品| 精品人妻一区二区三区视频在线| A片 AV一级在线播放观看免费| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 日本熟妇人妻一区二区三区| 日本高清久久| 国产白丝AV| av资源在线播放天堂| Aa东京男人的天堂| 成人av免费观看| 久久精品99| 国产小黄片在线免费观看 | 国产日韩精品无码去免费专区国产| 激情综合五月天| 亚洲丝袜在线观看| 九九久久九九久久| 欧美组图日韩亚洲中文字幕| 欧美少妇性乱| 免費黃色視頻觀看一| 老熟妇一区二区三区| 成年人性爱日韩| 色五月AV在线| 韩国久久97| 日韩肏逼视频| 欧美72网页| av无线看| 乱色老一区二区三区的观看方式| 去干网最新版| 男人在线天堂| 亚洲欧美精品久| 国产高清成人mv在线观看| 欧美日韩大香蕉| 丰满少妇人妻久久久久久| 免费A片三p视频| 99久久综合| 3028国产精品| 欧美中文字幕精品人妻| 96免费视频在线| 综合久久六月久久婷婷| 操一对老熟妇爽上天视频| 久久人妻视频网| 日韩操p| 日本黄色天堂| www.97在线| 一级性爱啪啪视频| 中文字幕黄色一起草| 蜜臀久久一区二区| 成人午夜小视频手机在线看| av中亚| 日本啊啊啊啊啊视频| 伊人久久大香线蕉无码| 欧美美女视频| 97干综合网| 欧美色图天堂在线| 99热99在线播放激情| 精品人妻15区| 黑人精品久久97| 五月天综合在线| 人人妻人人爽 97人人看碰人免费公开视频| 国产欧美黑人丰满在线| 亚洲熟妇图片| a级理论午夜日本| 91在线欧美| 日韩av情韩国爱禁区av一区二区| 久九九九九九九热| 插欧洲美女欧美精品| 在线播放成人高清免费视频 | 日本三级日本三级99| 搡老熟女免费视频| 天天天肏屄肏屄肏屄欧美欧美| 久久九七| 亚洲蜜臀懂色| 97亚洲国产影视| 偷看洗澡一二三区美女| 日韩精品一区二区日韩| 在线免费观看高清无码视频| 久久97视频| 嗯嗯,好大,好爽,好骚| 天无日色综合| 丝袜六区| 欧美性天天影视| 日本欧美国内在线| 免费的黄片wwwwww| 精品久久久久av影院| 久久性爱视频99| 91性片| 精产品久久| 亚洲好色人妻| 大香蕉2017| a片亚洲一本通视频| 国产精品乱码久久久久久久久久久久| 视频二区美腿丝袜制服人妻欧美| 色五月av| 五月天婷婷色| 免费男人的天堂| 91黑丝操| 综合自拍| 清纯唯美亚洲综合| 白嫩少妇| 五码视频在线观看| 久久久久亚洲av综合波多野制衣| 久久性生大片免费观看性| 久久久久久久性爱| 亚洲电影中字一区二区| 亚洲精品免费中文字幕| 国产AV色黄看到爽| 亚洲AV噜噜狠狠网址蜜桃动漫| 国产精品 久久久精品一牛| 狠狠操官网| xxx0国产在线播放| 操99| 日日天天久久啊啊aaa| 久久超碰97中文字幕| 黑丝日韩av丝袜av| 久久大精品乱码视频人妻熟女| 中文字幕女同在线| 激情内射| 欧州91高潮| 亚洲成人激情小说视频| 天天干天天燥| 日本中文字幕不卡视频| 精品无码不卡视频| 久久中久文96| 欧美精品激情| 日韩有码 一区二区三区| 91性高朝久久久久久久久| 久热在线精品免费观看| 8050午夜少妇无码| 久久人妻97久久久久久久| 干b在线性社区| 97AV在线免费观看| 91美女在线| 日韩激情无码影院| 国产农村一一级特黄毛片| 国产一区96在线| 亚洲综合在线高清| 国产尤物在线三区| 国产精品日韩在线一区| 这里只有精品久久| 在线情色电影 91大| 日天天九九天堂666| 韩日色费| 色婷婷影院| 亚洲精品1区| 久久久久久久性爱| 91精品丝袜在线观看| 性色乱AV一区二区| 操一对老熟妇爽上天视频| 亚洲AV成人精品网站在AV| 日逼国产| 一区二区三区蜜桃成人撸久久东京热 | 曰韩无码777| 熟女中出视频| 亚洲se91| 无码自拍SM| 久久久久密臀一区二区| 香蕉99秘 一区精品蜜桃臀| 收看日本人日bb| 五月天社区| 狠狠做深爱婷婷久久二区| 97综合国产| 蜜乳av首页| 超碰97在线中文| 亚洲视频中文一区| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 国产诱惑| 91丨豆花丨熟女| 国产亚洲 中文欧美久久| 亚洲 中文 欧美 日韩 在线 | 磁力99AV| 日本精品一级二级三级| 色色色综合| 精品视频一区二区| 精品超碰国产| 亚洲影视第一页| 宅男影院久久久,99| 九九热九九热| 亚洲风情在线观看| 精品色色| 久久欧美激情| 久99久视频精选| av中亚| 91久久久久免| 成年人黄色| 色五91| 九九九九九精品| 亚洲一区二区麻豆影院| 欧美91变态| 中文高清一区二区的| 天天网综合| 国产人妻精品久久久一区二区三区| 色色97爱| 97超碰碰碰| 婷婷婷婷婷婷久久久久| 国产九九久久久精品| 亚洲男人天堂网| 久久理论字幕视频| 懂色中文一区二区三区| 97在线观看免费视频l| 欧美一级国产一级| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 东北女人的毛片| 午夜福利1区2区3区| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久久精品国产72国产精品福利 | 人妻一区二区三区视频| 涩涩久久精品| 色墦五月丁香| 84YTCOM性无码| 玖玖爱一区在线| 家庭乱伦性爱av| 亚洲风情综合网| 69超碰综合| 91搞逼视频| 熟女91网| 日韩美女久久一区二区三区| 日本欧美韩国国产在线| 极品美女嘿咻| 麻豆天美传媒在线视频天堂| 91精品无码人妻系列| 一区二区视频在看| 99蜜桃臀亚洲成人在线观看| 午夜黄色免费在线观看| 精品久久久久久中文字幕视频免费 | 国产日韩中文字幕欧美| 91N欧美| 亚州免费啪啪视频| 超碰99re| 丝袜色综合| 你操综合| 曰韩av中文字幕专区| 日韩欧美加勒比| 亚洲老司机123专区| 九九热免费视频| 影音先锋新男人| 精品天堂| 天天干夜夜肏| 97精品视频免费| 天天日天天插| 精品国产久热在线观看| 亚洲国产精品成人综合| 天美麻豆一区二区三区| 亚洲综合骚逼| 67194无码不卡| 毛片电影一区二区三区| 中文字幕丝袜国产第一页不卡| 亚洲色人阁| 人人操人人精品影片| 日逼五月天| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 中文字幕一品色图| 亚洲综合九| 99久久无色码| 久久麻豆一区二区| 久久综合激情| 亚洲日韩美女中文字幕乱| 人人看黄色视频| 性色A∨91| 欧洲亚洲人妻无码久久三区四区| 午夜福利在线合集| www.男人天堂| 夜夜福利| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 在免费jIzzjIzz在线视频| 91被操| 尤物av网站免费在线播放| 久热热| 易易A毛视频| 久久熟女嫩草成人片免费 | 黑人精品成人一区二区三区| 日韩国产乱子伦App| 一级成人性爱| 高清国产性猛交xxxx乱大交| 久久伊人亚洲AV无码网站| 不卡在线观看视频| 欧美男人天堂| 精品无码一区二区三区色欲| 国产黄色剧情影片麻豆免费播放| 国产福利合集| 偷拍偷窥与盗摄视频专区| 翔田千里AV无码秘 三区| 欧洲久久一二线| 天天影视色香欲综合网小说| 国产JDAV无码视频在线观看| 久久久一区二区三区三州| 国产亚洲日韩欧| 爽极品影院| 亚洲最新av无码成人精品区 | 久久精品91| 国内外毛片在线观看| 密臀国产在线| 欧美激情精品| 操逼无码操逼| 欧美人妻久久精品二区三区| 免费一级欧美片片线观看| 大香蕉婷婷| 韩国女主播青草福利视频| 天天综和| 日本免费一区二区不卡| 91老司机精品| 日韩无码操逼片| 亚洲日韩美女中文字幕乱| 立川理惠加勒比无码| 国产精品麻豆成人AV艾秋| 亚洲AV乱码专区国产噜噜亚洲| 国产精品欧美激在线| 丰满人妻一区二区中文| 99精品人妻| 日韩中文字幕国产| av国产无码| 澳门成人网站久国产日韩| 动漫av中文| 麻豆一区二区三区在线看 | 夜夜操av亚洲一区二区| 超碰久久综合| 狠狠操,使劲操| 欧美黄片欧美黄片xxx| 色婷婷丁香五月| 日本最新免费韩国1区2区视频播放| 97超碰伊人| 国产精品爱欲| 黄色网址久久精品欧美喷水| 欧美色图91p| 中文字幕99999| 久久av成人无码免费| 亚洲天堂色图| 黄站在线免费观看| 欧美一级美片在线观看免费| 99热精品免费| 91精品人妻啪啪间| 18禁无码永久免费无限制| 婷婷久久久| 综合视频91| 波多野结衣之双飞调教在线播放| 欧美在线干| AV色五月天| 操逼逼一区视频| 97超碰美国| 久操免费电影| 国语av最新自产拍在线观看| 蜜臀人妻少妇久久在线观看| 久久久91| 操逼日批| 色五月婷婷中文字幕| 制服中出中文人人精品| 日本一区二区三区四区五区六区七区八区九区| 激情综合网激情综合| 99精品视频在线观看免费| 麻豆AV一区二区| 中文字幕乱亚洲美女精品一区| 欧美精品久久久久久久久88| 精品久久久久9999| 国产精品乱码久久久久| 婷婷五月天成人| 天天久久久久久| 久久久久久AⅤ无码免费肉站| 久草精品视频| 综合免费无码中文| 日韩少妇在线视频| 波多野结衣先锋影音| 午夜精品久久久久| 亚洲精品三区在线观看| 国精综合一二三区影视| 久久精品国产亚洲AV高清演员表 | AV麻豆免费一区| 国产视频一区二区三区久久亚洲天堂| 天天插网| 蜜臀精品1区2区| 欧美日韩插逼视频| 久久精品72| 一本大道不卡一二三区| 神马久久啊啊| 日人妻视频91| 欧美亚洲韩国视频十五区| 欧美日韩电影成人在线| 国产精品在线网站| 亚洲欧综合另类无码一区| 青青青草伊人精品| 色狠狠色| 91视频综合网| 97露脸精品丝袜| 久操网视频| 羞答答AV中文字| 日日狠狠久久偷偷色综合免费| 久久黄人人爽视频| 91暧暧| 成人激情无码在线视频| 欧美日韩国产色五月综合在线| 大香蕉综合在线| 97久久久| 欧日韩在线观看| 日本亚洲熟女视频| 999热日韩精品| 2020中文字幕| 99re公开精品免费视频| 在线二区不卡| 91国产大片| 国产 v乱码一区二| 九九九九国产| 欧美在线 亚洲| 无码又爽又硬又激情免费视频| 日韩免费a级毛片无码a∨| 91爱看| 中出91| 久久riav中文精品| 91性情| 亚洲男人的天堂网| 91久久精品蜜臀| 无码精品久久久天天影视| 欧美春色| 鸥美极品| 少妇免费视频| 日韩AV一起草| 男女猛烈无遮掩视频免费软件| 91插B网站| 国产久久视频| 人人爱操| 久操视频资源站公开| 家庭乱伦麻豆| 婷婷人妻激情| 肉丝无码中文高清| 日产中文字幕2020| 天天干美少妇一区| 大色综合网| 色视频蜜乳| 亚洲天堂资源网| 精品一区99999| 国产丝袜美腿美女麻豆| 精品一区二区三区蜜桃臀赵总 | 欧美性爽xyxOOOO| 九九操久久国产免费视频| 男人的天堂2000| 大香蕉 222| 密桃99999| 柠檬AV导航| 91高清无码下载| 999精品国产高清一区二区| 精品999一区二区| 国产成人啪一区二区| 嗯嗯啊好大| 亚洲五区熟女| 久久的网站啊啊啊啊啊| 一区二区三区精品黑丝白丝酒店对鸡 | 96久久久久久久| 欧美色图亚洲色,麻豆| 亚洲色香| 一区二区三区无卡视频在线观看| 69精品在线| 骚逼高潮久久精品| 亚洲激情久久| 狠狠色婷婷777| 婷婷久月| 色婷婷av在线观看| 啪啪啪综合网| 东京热亚洲一区二区| 久久女婷| 亚洲宅男天堂| 人人爽天天爽| 日韩精彩免费| 欧美色图片91| 69精品人人人人| 色老汉色| 白 大 人妻 区 在线| 亚洲美女色图| 亚洲熟女乱色一区二区三区久久久| 色色综合97| 久久久久久久久久久久九| 密臀视频一区二区三区| 中文字幕在线2| 台湾佬中文娱乐网久久久久久久久久com | 欧美老妇女内射网址| 九九英色视频| 国产精品久久久久久久久久久久久久久| 青娱乐大香蕉| 自拍亚洲综合| 国产一区二区在线看| 99夜夜操| 国产狂喷潮在线精品| 美国精品国产精品| 超碰成人国产| caopeng97| 啊啊啊97视频| 91熟女视频网| 大色综合| 蜜乳AV一区| 97精品综合| 特级大荫道BBwBBwBBW| 久久久久网站-538在线视频-欧美永久乱码 | 蜜臀AV一区二区三区| 中文字幕三四区| 人妻偷拍一区二区三区| 在线精品福利免费播放| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 99精品在线| 国产日韩精品一区二区三区| 麻豆天美在线喷水AV| 蜜臀网 一区| 亚洲免费成人在线高清无码视频| 午夜欧美女人操逼| 东北夫妻性偷拍| 日韩精品影视| 乱欲视频| 不卡啪啪视频| 好看的91视频| 熟女少妇视频| 伊人久久大香线蕉无码| 偷拍片久久| 日韩性色| av在线观看不卡网站| 九九九九九九九精品视频| 久久久久亚洲一区女同性恋中文字幕| 丰满少妇精品一区二区| 韩日色费| 91久久国产综合久久| 日本中文字幕熟妇| 亚洲欧美日韩免费观看| 日韩免费性爱视频在线观看| 成人天天看站长推荐| 久久精品电影在线| 欧美日韩国产中文精品字幕自在自线| 青青11操操操操操操操操| 亚洲日本天堂| 激情小说图片亚洲首页| av天堂影视中文在字幕在线中文 | 欧美精品一区二区少妇免费A片 | 96国产污污污丝袜| 成人精品无码| 无码色| 素人伊尹大香蕉免费下载视频| 一本色道综合久久欧美| 国产一区二区三区中文字幕| 96一区二区三区| 日本精品无码三级网站| 91网18| 成人小说另类在线| 日韩99神马视频播放片在线播放| 91麻豆天美国产欧美高潮| 精品人体无圣光凹凸| 91亚洲欧美色图| 久久久久久久97| 亚洲第一综合| 黄色工厂这里只有精品| 看一级黄色视频| 熟妇激情| 久久久精品无码亚免费| 欧美亚洲涩涩| 福利操逼| 97超碰免费人人性爱| 老外又粗又长一晚做五次| 亚洲男人天堂网久久| 国产精品国产精品国产| 天天影视色香色欲| 97天堂| 999久久久九| 亚洲高清视频在线免费观看| 精品国产网站| 日本潮催一卡操| 天堂国产AV| 日韩操逼HD| 欧美亚州色的图| 中文字幕狠狠玩| yazhouzaixian| 五月丁香综合激情| 亚欧成人一级片在线播放| 亚洲色图激情小说| 欧差乱伦二三| 日韩精品第3页| 久久久久久久国产视频| 久久 久久国内精品亚洲| 一区三区啪啪| 天天干人人乐| 久久久久9久久久久| 国产福利电影| 午夜综合在线| 婷婷综合激情| 成人线上超碰| 亚州春色| 337p大胆噜噜噜噜噜91Av| 亚洲一区二区AV| 有码免费观看| 精品人妻av在线播放| 女人18精品一区二区三区| 99精品无码| 久操91视频| 欧洲亚洲人人爽爽视频| 伊人五月天| Sekablack无码一区| 日韩一级二级三级免费看完整版国语版| 少妇高潮对白在线观看| 600国产精品视频| 插老姨肥穴| 亚洲AV永久无码一区仙野| 亚洲高清自拍| 久操影视| 97精品国产97久久久久久| 国产女同视频在线播放| 超碰97极品9| 日日干日日操五月天伦理视频| 2019久久久久久久久福利| 老熟乱一区二区三区四区| 后入 亚洲 美女 射| 国产亲戚伦亲在线| 国产美女高潮| 插B在线观看| 欧美亚洲丝袜美女电影| 亚洲国产高清福利视频| 国产毛片片精品天天看视频| 中文子幕一二三| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 婷婷色一区| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 1024午夜激情男人的天堂| 嗯啊不要在线| 成人乱码一区二区三少妇| 九九九九九九视频免费| 区自美91| 加勒比综合九九99视频在线播放| 亚洲精品亚洲人成人网| 国产成人综合在线播放| 91在线视频国产网站| 干美女人妻| 伊人991| 久9久| 激情婷婷五月天| 欧美性爱视频免费一区一A | 亚洲熟妇无码一区二区三区| 中文字幕成人| 色综合久| 中文字幕精品一区二区精| 国产无码精品成人| 9Ⅰ超碰| 亚洲色图片区| 熟妇激情| 亚洲欧美日韩国产丝袜自拍中文| 久久久久久亚洲精品中文字幕人妻| 成人在线视频网| 草莓精品视频| 中文字幕精品日韩中文字幕| 色哟哟 日韩精品| 日韩欧美日韩| 亚洲另类天堂| 好吊色综合| 999热这里只有精品| 精品国产乱码久久久久久久久久毛片| 日韩中文字幕宗合在线| 欧美日韩亚洲天堂网| 国产美女91视频| 亚洲精品欧美专业| 嗯……啊…嗯嗯…啊…好舒服| 91美女丝袜诱惑视频| 97久久视频| 九九热AV| 大香樵伊人网| 婷婷久草一区二区三区| 日韩AV片| 99热综合在线| 国产精品经典一卡久久久| 国产精品小视频一区二区三区| 啪啪啪大香蕉| 蜜臀久久久久久999| 亚洲天天艹| 欧美爆操91| 亚洲永久AV无码精品秋霞| 亚洲第91页 | 国产专区第一页| 乱伦熟女论坛| 亚洲一区中文精品| 桃花色综合影院| 8x福利精品第一福利视频导航| 爱妃国产亚洲视频中文字幕| av在线播放国产一区| 国产一区在线观看无码AV| 色欲蜜臀AV| 图片区小说区| 大香交伊人网| 96精品久久久久中文字幕| 国产日韩人人| 美女91色黄18| 91A欧美电影网站| 欧美组图日韩亚洲中文字幕| 国产一区二区三三视频| 熟女字幕| 96精品在线| 加勒比日本在线| 日韩电影免费网站麻豆视频| www.男人的天堂| 视频一区二区三区精品| 成年人一级黄色毛片大全在线观看| 欧美在线干| 麻豆黄四叶草网站| 最新9久久久9免费视频| 深夜视频| 色综合天天| 欧洲色色| 日韩78m视频| 色欧美在线| 超碰在线欧美性爱激情| 日韩激情中文字幕有码| 色嘟嘟人妻天堂网| 91少妇香蕉久久精品| 9久久精品| 二男一女成人A片| 成人情色一区二区| 超碰久久草| 2017亚洲天堂| 久久久免费的精品| 亚州操操穴网| 夜夜高潮夜夜爽国产伦精品| 国产又黄又爽| 青娱乐日韩无码| 欧美视频第二页| 亚洲男人在线观看天堂| 少妇一区二区三区高速| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 亚欧Av| 大香蕉综合| 亚洲少妇视频| 可以在线观看AV的网站| 国产大片精久久久久久| 91综合网在线| 中国乱伦一区二区| 日韩一区二区熟女| 久久岛国| 国产高清成人传媒影视| 精品网站99999| 欧美色图亚洲色| 性爱乱伦一区| 超碰天天操你比| 一级毛片电影免费看| 大香蕉人妻| 日本孕妇孕交| 久久性生大片免费观看性| 99久久婷婷国产综合精品草原| 熟女高潮合集-永久久久-成人AV| 精品九九| 日韩三级视频一区二区三区| 18禁久久| 蜜乳AV网址| 成人片视频| 99视频这有这里有精品| 久久欧美1卡2卡3| 蜜臀久久99精品久久久久久| 欧美日韩性爱精品| 99热18这里只有精品| 国产女人与拘做受视频免费| 超碰99热中文字幕| 欧美在线永久天堂| 日本中文字幕高跟| 张柏芝国产一区在线观看| 另类图片五月| 精品午夜福利| 色嘟嘟人妻天堂网| 97国产超碰| 欧美1727免费观看视频| 91麻豆天美传媒在线| 发朗少妇买婬全视频中文| 东京热av影院| 欧美成人都市人妻| 久9九综合在线| 亚洲色图超碰在线| 亚洲国产精品成人久久蜜臀| 欧美视频在线第3页| 天天干嫩逼网| 黄页18禁| 日本一区二区三区午夜观看| 欧美一区二区传媒| 亚洲精品尤物yw在线影院| 2019AV天堂| 国产精品久久久久亚洲av| 亚洲色图第四色| 中文字幕在线高清男人的天堂| 9久9久| 91oumei| 日本东京热久久久电影| 超碰综合色| 另类小色呦| 久久精品国产亚洲av水密被窝| 五月天婷婷欧美三区| 日本人妻最新在线中| 一本一首道人妻少妇免费久久| 日韩欧美中文| 欧色网址| 人妻美腿丝袜制服诱惑综合天堂-| 国产一区二区在线播放量| 久久久成人精品| av大香蕉| 日韩人妻一区二区| 夜草欧美| 丁香五月性| 日韩激情电影中文字幕| 亚洲综合射| 日韩高潮一区| 男人的天堂午夜av| 国产91丝袜 在线播放| 99国内精品| 美女写真| 国产精品久久久 | 久久久久久AⅤ无码免费肉站| 99国产女人| 91草草草| 99色| 亚洲色图欧美色图日韩色图| 国产又粗又长又大的视频| 日韩二三区| 亚洲精品久久久久久久蜜桃臀| 亚洲一区二区在线观看91| 中文字幕亚洲热播人妻| 国产精品视频91久久| 欧美在线|亚洲| 成 人 影视 一区 二区 三区 四区 | 欧美与日韩97| 国产女人高潮视频| 欧美一区二区三区蜜桃| 日本不卡五区| 久草线上视频免费看| 国产九九久久久精品| 无码自拍SM| 久久精品国产AV一区二区三区| 97国产|免费| 欧美大片一区二区三区| 在现视频女上位好爽| 蜜桃无码AV一区二区| 久久超碰国产一区二区三区| 少妇九九九九| 欧美夜色| 日韩精彩免费| 九九热精品| 操逼无码一区| 午夜福利国产欧美日韩夜夜| 亚洲欧洲日韩中文字幕一区| 999综合色| 69AV女优男人的天堂| 丁香五月激情五月| 色色色欧美| 久久精品国产亚洲妲己影视| 丰满人妻一区二区三区蜜桃视频| 日韩熟女视频二区| 精品一区二区麻豆| 后入内射蜜桃臀| 性爱动态120秒| 久久久久9| 精品一二三区久久AAA片| 超碰色男人操熟女| 淫荡熟女乱伦网| 性久久久| 精品无码一区二区三区色欲| 欧在线一二区| 伦理第一页| 在线天堂资源亚洲| 日本不卡免费二区| 91色色综合| 欧美乱妇狂野欧美在线视频| 欧美激情超碰777| 精品人妻一区二区免费蜜桃| 欧洲天天在线| 欧美九九爱| 国产熟女少妇一区| 欧美乱色| 97人妻色| 7月婷婷综合| 熟女在线视频| 97青娱乐超碰久久| 91红杏| 黄色十八禁网站| 一区二区不卡| 97精品久久久久中文字幕| 亚洲男人综合网| 久男人久久| 国产三级中文字幕粉嫩| 97中文综合| 99re超碰| 牛牛AV人人夜夜澡人人爽| 国产精品久久妻无码网站| 日本欧美一区二区三区视频麻豆|