|
|
使用下面的例子代码,不能使SIMO和CS为低电平:3 L/ p- ]1 K* @0 r$ f7 z
void PSCInit(void)
# @) I( {, g; L2 k/ \3 e{9 ]" h0 z1 ?; Q7 ~7 V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);" w+ G& [# N9 C* ~0 L0 C+ E- s9 E
}: ?+ u* ~5 p5 \2 y$ k
/ j, t5 Z R# d- `, v) A
void GPIOBankPinMuxSet(void)
9 y* `. v" R3 p8 y+ v) I- ^{1 O" U" N8 O3 Y4 N# O. [/ q8 a1 t
// DRDY ------------ GPIO6[14] -- 111/ S( v" {% U4 g! M3 U u3 A* D, [
// SPI1_CLK ------------ GPIO2[13] -- 46
0 n2 K$ s5 [) e. Y D" a: k // SPI1_SOMI------------ GPIO2[11] -- 44
% ^+ G; J8 m- D // SPI1_SIMO------------ GPIO2[10] -- 43
2 f5 t2 {8 K" ` \7 i( F! U0 S // SPI1_CS2 ------------ GPIO1[0] -- 17
J) @3 s: n) Z" ` // SPI1_CS3 ------------ GPIO1[1] -- 186 u$ j$ M* C- p! p: c
! s" q9 d0 z7 M% p: G0 ?2 ^8 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% P: T" G' f2 n$ { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);: C0 q1 H- b& j3 g# h( E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) g/ F' r9 b7 L0 Z8 d4 w8 N$ `
3 L6 D% f7 s0 S: ^ //DRDY
& T/ c8 i G3 n* @9 p3 ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" Q3 D! S$ g0 b. t // CS2,CS3
' ?) E( t: G: {$ k GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- Y! Q& b+ o: w
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS34 W% W* V+ S& x& G* |3 M) c
//SIMO; K7 }' d+ ^' x
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* `5 d! c2 S& N% Q* t
//SOMI
+ g3 u- N- R$ n% t% }( X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
: o% C2 k: x6 D, c6 E5 N //CLK
3 X3 i6 p& F1 v3 L: K/ @! \! x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 E1 z! j& q2 s
- J" z" O3 H2 g! M0 s: T. y6 L
// LDAC
8 p, e% M @5 D$ ^2 a: l$ k9 G GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK1 M/ K4 X4 ]' M6 P- \- d& s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! }7 R9 I& J2 u3 q% } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
N' V, G& N6 @: q) x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& N! J& y7 n4 r: H
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ G( f7 j3 ^& I% T# X2 }+ n, d$ u
}
) p: C* n( y r4 [' u0 P( R" _: C: L8 b$ g9 h' u
int main(void)
/ K6 o5 ?6 o+ e{, \! ]2 {9 _, y6 O1 q
// 外设使能3 a& H; \9 X* ]" n- W, Z- o# U* x
PSCInit();$ _' d* q5 r, U4 J% ?( d, ^
* c! y& k8 ?+ m- M( v' Y5 c/ E u6 f+ l1 C- z% Y+ G8 e
// 管脚复用配置
* C. F: l- t9 a, _, C9 C GPIOBankPinMuxSet();
! ~2 l7 O$ g+ N! v& H" p for(;;)
4 S" n% G' V3 A* K+ P2 i {
& s1 o2 h; D# r" a SET_SCLK();//时钟正常输出
2 h! j) [, M; S2 S GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( \2 G# B' q9 W e* F4 T9 `8 I/ A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, T, G/ L/ p) S. ? GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' b# l7 y. F; c& l- D' M4 x9 S$ U' c) [3 g' Y7 u: A
delay(20);
7 b4 l# t! o* Q7 g CLR_SCLK();
% E6 n: G; ]5 D' \" Z- i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 x0 I2 G0 P( T" w* H, H# r7 O! g GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
/ P% U0 W! }2 K" s1 t, L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. p% I# R. d3 {' |$ V. C# l
delay(20);$ U, k# V q8 U& N9 [3 t9 u
}3 Q- k- }. q/ z# e/ F/ ~# K
}
! }0 K7 R; l- I2 E0 j; b6 i |
|