欢迎访问:
HotPower的农家博客


探讨STM32ISP及STM32波特率自动识别技术(菜农)

Jul 13th, 2008 | By hotpower | Category: ARM园地

探讨STM32ISP及STM32波特率自动识别技术(菜农)

STM32之ISP也同其他ISP一样采用从机(STM32)波特率自动识别技术.

它采用非常“不理智”的偶校验(一个字节前面加一位校验位使得“1”的个数保持为偶数),菜农对其不

慎满意~~~

为什么???…(俺不说)

识别码0×7F,即S 1111 1110 P T (其中S为起始位,P为校验位,T为停止位)

或: 0 1111 1110 1 1
可以“看出”它采用“7:1”识别模式。

即D0D1D2D3D4D5D6的脉宽是S脉宽的7倍.
或D0D1D2D3D4D5D6的脉宽是D7脉宽的7倍.

波特率自动识别技术有很多种,其中最常见的是定长对变长波特率自动识别技术

STM32的波特率自动识别技术为PC端为定长波特率(可变化但波特率保证正确)
STM32侧由于事先不知主机(PC)的波特率大小, 故其必须测量PC的波特率信号脉宽。

从机测量波特率信号脉宽也有多种,最常见的也是最蠢笨的脉宽测量.

从前面所述“7:1”识别模式可以看出:

主机发送识别码0×7f后,从机侧的S被拉低为0,故可对STM32产生中断,即同步开始。
但由于中断要占用MCU的中断向量表部分,故ISP程序为不影响用户的
代码空间一般采用IO查询+定时计数模式.

STM32的大鼻子老外的脑浆也是白色的,故跑不出此套路~~~如同NXP等~~~

菜农的脑浆是”红色”的~~~故肯定不会采用此“低级趣味”的方法~~~

让俺会这样定义(设计):
1.主机以某一固定波特率表中正确的波特率间隔循环发送识别码0×7f.
2.从机(假设主频已漂移)先用正常主频的波特率表中循环取出正确的波特率并
  间隔地从硬件端口读取接收的数据直到接收到识别码0×7f为止。
  若主频未漂移,那么循环表中所有波特率必然收到识别码0×7f,自适应过程结束.
  否则,上下微调波特率表中的所有时间常数则最后必然找到识别码0×7f.

菜农在GPS上就采用这种波特率自动识别技术,因为GPS模块是以某一固定的波特率
“没命的发送NEMA0813语句”,这就满足了“主机循环发送识别码”的协定。

波特率自适应就说完了~~~开始分析STM32的自动ISP过程吧~~~

首先ISP必须要有个进入开关设定,即Boot1/Boot0的设置.

我们可以简化为Boot1恒为1,Boot0为进入开关.
STM32的Boot0为: 1—运行状态  0—ISP状态

激活ISP状态由Reset信号完成,这样就保证了在任意时刻只能在一种条件下工作的约定(公理)

所以我们只需控制好Boot0和Reset这2个信号即可实现自动ISP~~~

有很多人不满菜农的自动ISP行为~~~谁让俺学的是自控呢???

N十年前俺在农校的第1堂课在笔记本上写的第1行字(可能也是当时的革命誓言吧):

让人类从繁重地危害身心健康的体力劳动中解放出来!!!

多年来俺一直想着这个“誓言”和“梦想”~~~从不违犯~~~所以俺设计的产品可以“笑傲江湖”十数年~~~

言归正传.试想一下:

当产品完成设计交付用户时,机壳肯定是封死的,除非是开发板之类的俺无话可说~~~

但是搞产品要想“笑傲江湖”十数年就必须考虑任何微小的细节。

现在是网络时代,USB转串口技术的成熟使都认为的工控通讯用串口是小儿科的歪论破灭!!!

可以看到各厂家对串口的重新定位,特别是多串口产品,像ST就比较“超前”~~~

随着技术的进步和用户的需求,远程诊断和ISP肯定是个方向.

自动ISP可以解决不愿给源码又不愿付差旅费的烦恼,而且也从ISP软件升级后延长产品的寿命.

ISP过程实际就是发送接收方各自的攻防体系的建立和实现过程:

主机发送信号,从机接收信号并应答,反之亦然.

小朋友和网友说ST的ISP有时很难联机通讯,俺开始玩STM32时也觉得如此,后来还好些。

主要是菜农近来的打击目标侧重在DSP上,就一直没追究其问题的所在.

不过对STMISP软件未带自动ISP很是不满~~~所以当菜鸟时就与香主“盲谈”了自动ISP的构建.

俺有个不好的习惯~~~ 一但俺认证可行后,只要不搞产品就不会去急迫地实施—虽然可行…

小朋友说网友说俺忽悠人~~~冤枉菜农了~~~

因为俺无法抽身~~~俺不愿放过用HotBios叫板TI的DSP/BIOS的大好机会~~~

HotComm是菜农三剑客之一,俺存放了一年一直舍不得就压在了“箱底”不愿见阳光~~~

因为它设计的目标就是倒塌地球上一切的串口控件~~~

这次HotComm要为俺在STM32上的“忽悠”赎罪卖身了~~~心痛+悲痛之中…

(可能有些人会说菜农太狂妄~~~正如VxWorks专家吴旭光教授说俺颠覆OS理论太狂一样~~~有空

他要到他那里去切磋~~~)

又跑题了~~~

仔细分析STM32ISP的数据流向,可以找到很规律的关系。

不外乎你攻我守,你守我攻。

但如果攻守失衡,必然带来死机的结果~~~

现在做到的是如何解脱死机(死锁)???—只有Reset!!!

现在看到自动ISP的好处和威力了吧—不怕死,就怕死了救不活!!!

(小朋友名句—功夫在高,也怕菜刀)菜农想做到—菜刀砍过,人鬼不倒~~~才是高~~~

自动ISP电路很简单,俺和小朋友先在EK…忘了板名和厂家了~~~就是那个199的~~~

LPCARM采用DTR->Reset,RTS->ISP. 所以俺就抄袭这个习俗吧~~~但愿NXP的大鼻子别告俺~~~

由于DTR/RTS是232电平,即-15V~+15V, 一般在+-10V左右。

一般采用RS232芯片实现232/TTL电平转换,也可用二极管、三极管

但要注意电平的钳位及限流问题。

RS232内部有2入2出。

而作为主机,信号方向有3出1入.

即TX(STM32的RXD),DTR(RST),RTS(BOOT0)为输出信号, RX(STM32的TXD)为输入信号.

RS232芯片一般只连接RXD/TXD这2个信号,故还剩1入1出未用.

将DTR接入RS232电平转换芯片,那么STM32的RST就得到了正常的电平控制。

考虑硬件存在线与问题,故:RS232的TTL输出加一只二极管D1到RST.

再考虑Boot0的连接问题:

由于RTS是232的+-10V,那么肯定不能直接和Boot0连接。

由于Boot0我们可以把它结果100K电阻(厂家标注)上拉至VCC.(STM32的运行状态)

所以我们只需在Boot0上施加低电平即可设定ISP模式.

故可用二极管D2单向取-10V即可,考虑STM32不能承受负电压,故可在接二极管D3到地GND(VSS)

来将RTS钳位在-0.7V.

由于D3的钳位导致了RTS信号过流,故必须用串接10K左右的电阻R1来限流。

到此自动ISP硬件电路的改造过程以付出D1,D2,D3和R1的“代价”轻松搞定~~~

若搞产品可继续:在Boot0端再串接二极管D4来消除D3钳位造成的负压-0.7V.

在Boot0,RST上各接102(或103,104)电容防止信号误触发.

自动ISP硬件“电路图”如下:
                                        +–>VCC
                                      100K(板子自带)
                                        |
           (负极)   (正极)              |
RTS—->–R1–> -D2+ ——-+– (-D4+)–+–> STM32_Boot0  (注D4可不接,短路或加电阻即可)
(DB7)                       |   
                            -(负极)
                            D3  
                            +(正极)
                            |
                            =
                           GND

(DB4)                   (负极)   (正极)
DTR—->–RS232————> -D1+ –>STM32_RST
       (232入)   (TTL出)

一般DTR/RTS未接PC时都为-10V左右,所以拔掉也不能影响STM32的

正常工作.

由于RS232内部实际为反向器,故:

DTR = -10V时RS232输出高电平到RST,即STM32正常运行状态.

RTS = -10V时经过二极管的单向导电特性,Boot0为0进入ISP状态.

但是注意: 如果PC未介入,RTS上不会有电压信号,故Boot0依然为1

所以RTS的工作重点只是如何拉低Boot0上的电压!!!

若无PC谈何拉低Boot0???

所以PC脱机后该电路也不会影响STM32的原工作状态的~~~

相反PC ISP完成后(假使还在ISP状态)再脱机,STM32会自动回到运行状态~~~

这—–就是自动ISP的”真谛”所在~~~

菜农HotPower@126.com  2008.7.13 11:30 于雁塔菜地

21 comments
Leave a comment »

  1. 菜农,这里有错误?

    应用笔记:AN2606 STM32F101xx and STM32F103xx system memory boot mode 第5页

    在复位时当BOOT0=0进入用正常工作模式,
    当BOOT0=1进入ISP模式。

    菜农的自动ISP硬件“电路图”:
    +–>VCC
    100K(板子自带)
    |
    (负极) (正极) |
    RTS—->–R1–> -D2+ ——-+– (-D4+)–+–> STM32_Boot0 (注D4可不接,短路或加电阻即可)
    (DB7) |
    -(负极)
    D3
    +(正极)
    |
    =
    GND

    (DB4) (负极) (正极)
    DTR—->–RS232————> -D1+ –>STM32_RST
    (232入) (TTL出)

    在连PC时,因为PC串口的DTR/RTS输出为-10V,由于RS232内部为反向器,故:

    DTR = -10V时RS232输出高电平到RST,即STM32正常运行状态.

    RTS = -10V时经过二极管的单向导电特性,Boot0为0进入User Flash Memory.

    但是注意: 如果PC的ISP软件未介入,故Boot0依然为0.
    当执行ISP软件后才能让DTR = +10V,RS232输出低电平到RST,即使STM32复位,
    RTS = +10V时经过二极管的单向导电特性,Boot0为1进入System Memory,
    这样可以进行ISP写入程序。

    在未连PC时:

    DTR未接入,但RS232输出依然是高电平到RST,即STM32正常运行状态.

    RTS 未接入,Boot0为1进入System Memory.

    注意:因为Boot0为1进入System Memory,所以STM复位后不能进入正常工作状态。

  2. mammamia; neurontin; doxazosin; sumycin; sumycin; buy cheap generic zocor; sumycin cheap; zyvox generic; order wellbutrin; zocor online order; online zyprexa purchase,
    ; order zyban; doxazosin; zocor; zocor; purchase cheap sumycin online; buy generic neurontin online; buy doxazosin; purchase generic sumycin online; zyvox cheap; doxazosin; zocor; doxazosin online; zocor; sumycin order online; zocor buy; sumycin; order doxazosin online; zocor; buy doxazosin; purchase generic zocor online; zocor; zocor; generic wellbutrin; order neurontin; zyprexa; purchase generic zyprexa online; zocor; doxazosin; generic sumycin; doxazosin order; zyvox; online zocor buy; generic zyrtec; buy zyrtec usa; wellbutrin cheap; zocor;

  3. mammamia; prednisone; zithromax; cialis soft; buy viagra; cialis; cialis; acomplia; paxil cr; generic levitra; buy zithromax online with no prescription; buy cheap rimonabant online; propecia pill; buy antibiotics zithromax; buy cheap soma; cheap tramadol ultram; vardenafil levitra online; zoloft medication; online levitra; cialis; viagra; neurontin medicine; rimonabant buy cheap; nexium cheap; ultram tramadol; order prozac; acomplia; cheap levitra; buy cialis; buy ultram; viagra online; paxil; zoloft cheap,; purchase propecia; herbal xanax; ultram for pain control; buy ultram; online clomid; generic cialis online; best buy generic viagra,; zoloft depression; buy cheap rimonabant; zyrtec; diflucan; celexa;

  4. mammamia; buy dilantin; femara; karela online; estrace; uroxatral; purchase celadrin; tegretol; generic betnovate; alpha lipoic acid generic; cheap avalide; januvia order; order femara; benicar; herbal phentermine; lotensin; generic cleocin; buy cefixime; sinemet; order generic fucidin; florinef buy online; order pravachol; buy feldene; buy generic maxalt; order lariam; generic levlen; lopid; docusate; french red wine; aricept; cheap male enhancement pills; purchase prazosin; order cheap lopressor; online trimox; buy cheap sarafem; ashwagandha; adalat; furosemide buy online; online amantadine; buy requip;

  5. mammamia; order plan b; order lisinopril; topamax cheap; green tea; cheap fosamax usa; breast enhancement; vytorin buy; buy paxil; buy vitamin c online; zyban; vitamin c; gaba; neurontin; order xenical online; generic carisoprodol usa,; valtrex generic; online cla; cheap tramadol; online gaba; aspirin; buy hyaluronic acid online; buy buspar; coq10; zithromax; ginseng; avandia; diclofenac; tramadol; seroquel; folic acid; fosamax; tetracycline; buy orlistat;

  6. mammamia; prozac online; buy stromectol online; zoloft; purchase lexapro; generic prozac uk; 100mg accutane; viagra soft tabs; viagra; buy hoodia usa; weight loss,; buy cheap generic cialis; rimonabant; clomid online; cialis soft tabs; cialis soft tabs canada; lipitor; lexapro; hoodia purchase; order propecia; buy generic viagra; buy levitra uk; cialis buy; acomplia; uk order rimonabant; acomplia; propecia; order propranolol; viagra soft tabs; online lipitor; clomid; zoloft; buy cheap stromectol online; propranolol; accutane; purchase cheap levitra online; buy doxycycline online; buy doxycycline online; weight loss,;

  7. mammamia; cipro; cytotec order; cymbalta; benicar; cipro order; cytotec; amoxil 500mg; order cheap amoxil; benicar; generic cytotec; amoxil online; cytotec online; cipro; buy cymbalta online; cytotec; cheap benicar online; benicar; amoxil; cytotec drug,
    ; buy cytotec; cymbalta; buy cymbalta; benicar cheap; cipro; online cytotec; cipro; cytotec online; order benicar; cytotec; order cymbalta online; antibiotics cipro xr; cheap cytotec; amoxil; online benicar; buy cytotec; cipro; buy cymbalta online; cipro; order cheap cipro; benicar cheap; online cymbalta; buy cymbalta; cymbalta; cipro online; cipro; cytotec uk; amoxil capsule; order generic cymbalta; cytotec cheap; amoxil cheap; buy benicar;

  8. mammamia; buy stromectol; buy stromectol; propecia; buy stromectol online; rimonabant uk; rimonabant; comprar propecia; canada rimonabant; buy propecia; generic stromectol; rimonabant; clomid; costo rimonabant; clomid uk; propecia purchase; propecia; buy propecia; compra propecia; online stromectol; rimonabant köpa; propecia canada; cheap stromectol online; stromectol; buy clomid; buy stromectol; vente propecia; order stromectol; finasteride; comprar el rimonabant generico; rimonabant bestellen; rimonabant prezzi; clomid köp; cheap stromectol online; achat propecia; propecia canada; clomid senza ricetta; cheap rimonabant; buy propecia; stromectol online; propecia preis; propecia; clomid kaufen; buy propecia; propecia finasteride; rimonabant; clomid comprar; cheap clomid; rimonabant generico; online propecia; propecia köp; clomid preis; cheap stromectol; cheap rimonabant; acheter propecia;

  9. mammamia; order lipitor; buy prednisone; order nolvadex; order generic lexapro; buy lasix; lexapro; lexapro; lasix order; prednisone posologia; lipitor; buy lexapro medication online,
    ; lasix order; buy nolvadex; lexapro; lasix; order prednisone online; lipitor; order cheap lexapro; online lexapro; vendita prednisone; buy lexapro; lasix; prednisone; generic prednisone; order lexapro; lipitor; online prednisone; lasix; buy generic lipitor; buy nolvadex online; prezzo prednisone; nolvadex; lipitor; lasix order; prednisone kaufen; prednisone canada,
    ; cheap lexapro; lasix; cheap lasix; prednisone preis; buy cheap lasix online,
    ; lexapro; online lipitor; online lasix; buy lexapro medication online,
    ; order lexapro; cheap nolvadex online; online prednisone; buy cheap lasix; buy lasix; prednisone; order lipitor online; venta prednisone;

  10. mammamia; order nexium; online revatio; buy revatio; buy female viagra; nexium; effexor; effexor bestellen; effexor; revatio; effexor; women viagra ; nexium; revatio; effexor; order nexium; female viagra; female viagra pill; acheter du effexor; revatio; buy effexor; uk revatio; female viagra comprar; female viagra drug; nexium; viagra women; buy nexium international pharmacy,
    ; que es effexor; prezzo effexor; nexium canada; nexium; revatio order; women viagra ; effexor; female libido viagra;

  11. mammamia; benicar order; cymbalta; generic cymbalta; online cymbalta; order cymbalta; buy cipro; cymbalta; cymbalta purchase; amoxil; cheap amoxil online; cymbalta; amoxil; cheap cymbalta; benicar generic; cheap cymbalta; buy cytotec; online benicar; amoxil 500mg; generic cymbalta; order cymbalta; cymbalta; buy cymbalta; buy cymbalta; cheap benicar; cheap cipro; cymbalta; cymbalta; online cytotec; cymbalta online; cymbalta online; order cipro; cipro; buy amoxil; cytotec cheap; cymbalta cheap; amoxil; cymbalta; order cymbalta; order cytotec; buy cheap amoxil; buy cipro; order generic amoxil; online cipro; cymbalta; benicar order; amoxil online; cipro; cymbalta; cytotec; cheap cymbalta; online benicar; amoxil; buy generic cytotec; amoxil order;

  12. mammamia; pfizer zoloft; purchase zithromax; uk prozac; generic zithromax; zithromax sverige; zithromax españa; zithromax without prescription; order cheap zoloft; buy xanax; pfizer zoloft; buy prozac; buy zithromax; generic xanax; discount xanax; zoloft order; buy zoloft online; xanax no prescription; xanax; purchase prozac; buy zithromax; zithromax; xanax prix; prozac bestellen; zithromax; zoloft; zoloft; order zoloft online; buy xanax; purchase xanax online; xanax kopa; zoloft; zithromax; xanax vendita; zoloft; online zithromax; zoloft; purchase xanax online; buy xanax; online prozac; venta de zithromax; le xanax; xanax online; prozac; xanax online; generic zithromax; achat prozac; prozac; comprar el zithromax generico; xanax on line; el zithromax generico; buy zithromax; buy zoloft; beställa zithromax; costo zithromax; zoloft; online zithromax; buy xanax; que es xanax;

  13. mammamia; propecia generic brand; canada rimonabant; buy cheap rimonabant; rimonabant uk; propecia prices; buy rimonabant online; stromectol online; stromectol online; buy propecia; propecia; rimonabant; online rimonabant; buy cheap propecia; clomid köp; rimonabant; clomid; rimonabant; vendita clomid; propecia; venta de clomid; clomid tabletten; propecia brand name; propecia; rimonabant purchase; rimonabant rezept; rimonabant; brand name propecia no prescription; vendo propecia; rimonabant vendita; order rimonabant online; rimonabant suppliers; buy clomid; clomid köpa; stromectol; chute de cheveux; propecia; buy propecia; buy clomid; clomid; order stromectol; propecia tablets; rimonabant; rimonabant; buy propecia online;

  14. mammamia; propecia purchase; buy propecia; rimonabant; order rimonabant; buy cheap stromectol; brand name propecia no prescription; buy stromectol online; propecia; order stromectol; buy cheap rimonabant; cheap rimonabant; le rimonabant; buy clomid; clomid uk; stromectol generic; il rimonabant; buy clomid; order stromectol; online stromectol; order rimonabant; el propecia generico; köpa clomid; stromectol online; propecia; finasterid; propecia canada; rezeptfrei clomid; rimonabant; generic clomid; rimonabant; venta propecia; comprar clomid; clomid; comprar el rimonabant generico; clomid prezzo; rimonabant prezzi; order rimonabant online; order stromectol; propecia prezzo; rimonabant på nätet; clomid rezept; generic stromectol; beställa clomid;

  15. mammamia; cialis sale; purchase cialis; levitra bestellen; viagra brand cheap; buy viagra; order viagra; levitra sale; cialis online; potenzmittel; cialis; viagra; pfizer viagra brand sale; acheter levitra; cialis; levitra prix; cialis; buy cheap cialis; generic brands viagra online; purchase viagra; cialis; levitra prix; viagra; brand generic levitra name vs; buy cheap cialis; cialis; order cialis online; buy cialis; viagra españa; brand name only cialis; levitra tablets; buy cialis; buy viagra; cheap viagra; venta levitra; buy brand cialis; cialis uk sales;

  16. mammamia; order vpxl; online hoodia; online vpxl; vpxl canada; online hoodia; hoodia; vpxl; hoodia; order generic vpxl; hoodia; cheap vpxl; hoodia; order vpxl; cheap vpxl; buy vpxl online; vpxl; hoodia pills; cheap vpxl; vpxl; buy vpxl; online vpxl; hoodia herbal; hoodia preis; hoodia products; hoodia; vente hoodia; buy hoodia; vpxl; buy vpxl; cactus hoodia gordonii; vpxl; online vpxl; hoodiamax; vpxl; cheap vpxl online; le hoodia; generic vpxl; vpxl; hoodia; hoodia p57; vpxl order; hoodia plus; online vpxl; vpxl; cheap vpxl online; hoodia gordonnii; produits coupe faim; vpxl online; vpxl cheap; coupe faim plantes; hoodia gordonni;

  17. mammamia; buy prednisone; cheap lasix online; lasix; buy lasix; lexapro; lexapro cheap; generic nolvadex; lasix; buy lipitor; lexapro; cheap lexapro; lexapro online; lipitor; buy lexapro online; compra prednisone; lipitor; order generic nolvadex; buy lasix; lipitor cheap; online lexapro; generic lexapro; prednisone prix; uk lasix; order lipitor online; buy nolvadex; lexapro; cheap prednisone; cheap lipitor; lexapro order; lipitor; buy lasix; buy generic nolvadex; buy prednisone online; köpa prednisone; lipitor order; lipitor; lexapro canada; order cheap lexapro; nolvadex medicine; order prednisone; nolvadex online; online lasix; lipitor; order nolvadex; acheter du prednisone; achat prednisone; lasix; order lexapro; lasix generic; buy lexapro; nolvadex medicine; cheap lasix; nolvadex; buy generic lexapro; lipitor purchase;

  18. mammamia; buy female viagra; buy nexium; acheter female viagra; effexor; viagra women; female viagra drug; nexium canada; effexor; nexium order; women viagra ; viagra women; online nexium; female viagra; kopa female viagra; effexor uk; female uk viagra; viagra women; revatio; effexor på nätet; female viagra; revatio; nexium; uk nexium; effexor españa; revatio; female viagra tabletten; que es effexor; nexium; female viagra drug; vendo effexor; viagra for females; cheap revatio; female viagra; online effexor; buy revatio; achat female viagra; effexor; nexium; viagra kvinnor; effexor xr 37.5mg; viagra for female; female viagra generico; effexor xr; generic female viagra; precio female viagra; effexor posologia; buy effexor; viagra women; viagra kvinnor,
    ; effexor köp; female viagra canada; female viagra pill; acquisto effexor; generic revatio; women viagra ; uk female viagra; female viagra pill; effexor; buy revatio;

  19. mammamia; precio doxycycline; viagra professional; cheapest viagra professional; cheap viagra professional; viagra professional canada,
    ; buy viagra professional; le doxycycline; cialis professional canada,
    ; cialis professional; cialis soft tabs canada; cialis soft tabs cheap; köpa cialis soft; purchase cialis professional; cheapest viagra professional; cialis soft tabs; soft cialis tabs; buy viagra soft; viagra soft tabs; buy cialis soft tabs; cialis soft tabs; cialis professional uk; cialis professional canada,
    ; cialis professional; cialis soft kaufen; doxycycline; viagra professional; cialis professional; purchase cialis professional; viagra soft uk; viagra soft; uk viagra professional; cialis soft preis; cialis professional canada,
    ; doxycycline; cialis professional;

  20. mammamia; viagra på nätet; buy cialis; viagra; buy levitra; buy levitra; levitra; cialis; levitra; prezzo viagra cialis levitra; cialis; viagra uk sales; order viagra online; cialis; uk viagra; order viagra; buy cialis; brand cialis for sale; prezzo viagra; cialis; viagra brand without prescription; brand name levitra; cialis purchase; cialis; cialis; order cialis; online name brand viagra; buy cialis; online cialis; cialis; cialis; cialis uk sales; brand name viagra on line; viagra online; cialis prices; buy brand cialis; viagra brand by online; brand name levitra; cheapest brand cialis; buy viagra; levitra online; brand generic online viagra; viagra suppliers; potenzmittel; buy levitra; cialis sverige; cialis purchase; brand cialis cheap order; cialis;

  21. mammamia; cheap generic cialis; viagra; cheap viagra; viagra; brand cialis cheap order; generic viagra; cialis; cheapest brand cialis; buy cialis; viagra mens health name brand; uk viagra; buy cialis online; cialis; order viagra; generic levitra; levitra; uk cialis; buy cheap cialis; viagra; uk cialis; order levitra; generic viagra; levitra; achat cialis; viagra; buy cialis; viagra; viagra suppliers; generic levitra; brand cialis name online order;

Leave Comment