嵌入式开发者社区

标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平 [打印本页]

作者: lmxcyx    时间: 2015-5-23 19:02
标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:5 ?4 P+ N) P" z! w
void PSCInit(void)9 Z# L4 x8 @0 W
{
5 X+ P& i) w, p" B( p# P        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: _+ r5 {, a9 B4 t
}' v5 b3 F$ b2 X7 e6 ]0 a* x% l
  n* O8 n4 I5 W; t
void GPIOBankPinMuxSet(void). }1 P. u" @1 k1 a& s/ m! M0 H* c
{
, K* \9 v3 Y9 e- Y8 E" i, |        // DRDY     ------------ GPIO6[14] -- 111
) E: |9 x. d; w( J; O        // SPI1_CLK ------------ GPIO2[13] -- 46+ w  x- ~. ?5 R- Z/ r* D
        // SPI1_SOMI------------ GPIO2[11] -- 44
  _( c$ |9 s, Q/ B        // SPI1_SIMO------------ GPIO2[10] -- 43
7 c9 p5 B8 a& B* x/ ~+ O# f; `0 {5 g* ~        // SPI1_CS2 ------------ GPIO1[0]  -- 17
3 X2 h" {% m* g6 n/ h; P1 Y4 x# J; k; N        // SPI1_CS3 ------------ GPIO1[1]  -- 18
2 J, p: ]. D8 H; p) ?/ Y
! G& o# e0 X, F! b6 k; |        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. `& p- ~, e9 S: A, A
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# o3 l" z  L2 @+ C6 U
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% D& Z1 V! A+ y

0 V: L& C1 E; K4 i. ?) W/ j8 D        //DRDY
+ g4 d+ X$ L5 _7 o& B8 Z        GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT);  // GPIO6[7] DRDY
5 R/ Z" b7 H) y' V, v: W        // CS2,CS3/ |5 H1 T8 D3 X' t( u; Q
        GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT);   // GPIO1[0] CS2
% w; S! u8 Q* q. P1 B) n9 V        GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT);        // GPIO1[1]        CS3  Q  c( k7 S2 Z! [) T- d
        //SIMO4 g0 S/ r# P, s: o8 ?; w
        GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT);   // GPIO2[10] SIMO
7 _6 @# P, h  [$ \& g& ?1 Y9 e        //SOMI
, _5 \7 I' T# i8 W# w1 {        GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT);    // GPIO2[11] DOMI
4 G- b' j0 @, _# C- D! t9 o" N        //CLK& S3 V2 h* u7 |! d
        GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT);   // GPIO2[13] CLK
/ o: ?; b- H+ w* D* ?8 |8 E6 F/ n' y3 H9 q1 ^( s
        // LDAC; }; h$ O1 ]* }( o; I4 w7 z
        GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW);  // CLK$ @: m4 X% l/ |) X/ P/ g* T
        GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ I" E: t" c1 h- z/ k- w' i        GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
  X' k% i0 n/ `        GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
! Z+ ]1 M8 h1 D1 r% D/ b        GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
2 X; P& g& k2 J- h}
: O9 Q0 k0 q9 U! }4 l! d5 v4 \" a3 y
int main(void)% A& m! M, C$ m* T' Y" m
{
/ t) e9 ?( L: j/ r' N' b        // 外设使能4 P+ f" z2 Y+ j6 ]/ \
        PSCInit();% w- R2 t, O! a. x

) a$ K: S' j+ Q2 b( \   6 p; Q+ K/ {& [) [, n( i  \' J# q
    // 管脚复用配置2 F$ Y* I9 e5 W! C& U, u) o
    GPIOBankPinMuxSet();7 _- M- {% B8 M
    for(;;)9 f5 b0 A/ O- M& A0 t/ t5 {
        {7 D- a' W, m. u9 A4 J  ?& v
                SET_SCLK();//时钟正常输出
, G2 G" E* R+ Z+ O$ t                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; [) {. C8 J" S3 [+ u/ n    GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3! _9 L5 v  O# v9 C- C* S
    GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ z3 F  v) l3 e' B. o2 U5 s
7 k2 c+ V( Q5 n
    delay(20);
/ D/ C$ d7 B6 M- u8 Z5 H                CLR_SCLK();
4 m! X9 V) ~! d) Q' E" T                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( {1 E. L/ I# c1 J# l! S" A3 w1 ?) Y                GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# `9 |+ @. q- Z& [
                GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' U& w$ i& [6 o' J$ ^$ q
                delay(20);
8 B. a6 @8 j+ Z5 _) b' f        }  c1 H2 ^( @/ G2 U4 u' x1 i/ [" n. q
}2 y2 G" h, B0 B7 v: \

作者: Lewis    时间: 2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的9 x$ H7 k2 D& T7 k* d. C& d





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4