|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' Y- g$ I4 U7 J! W5 k: lvoid PSCInit(void)$ S c" T* S3 a8 |" w
{
. V6 l, e- b7 @. L PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 Y, s: q! `: }5 L/ _6 K
}
Q. ^2 R# u. O% ?; n9 ?; Q5 M' T0 V
void GPIOBankPinMuxSet(void)7 C+ U) O3 W& t# ~& ?6 ]; A
{
/ u, ]5 j! e! q // DRDY ------------ GPIO6[14] -- 111
) c. ]: b# w o1 u // SPI1_CLK ------------ GPIO2[13] -- 46
4 m. |7 Q% q; n, e1 ] // SPI1_SOMI------------ GPIO2[11] -- 44
9 k$ u6 M! E* R) N- I // SPI1_SIMO------------ GPIO2[10] -- 43
1 b- J# M/ f* R4 ^+ A2 F // SPI1_CS2 ------------ GPIO1[0] -- 17. [) k/ r$ R# y7 M
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 p) i' v" D8 f9 M) a$ Y+ Q2 I6 N+ H: B( G8 P2 G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);& P, b9 h" A5 B0 d n. \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* T: g9 j3 \! S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) p& G5 E5 V t! K. @: U. f& @4 i
1 b2 n8 Z' w- J2 H4 o. N //DRDY% a) _) [' H8 m- J& V0 n8 m
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% o# }, ^( r; r5 }1 Q
// CS2,CS3/ I5 c& {" Z! ~
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& N& j3 w1 W2 t+ g" L2 h8 a6 D GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
4 j* j3 x) \' _) u4 J //SIMO" Y0 G% `6 V8 R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: l. a0 U6 K0 N( S# l //SOMI Z8 u# J Z! \. y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" J, l8 l- {, t6 U/ Y3 g
//CLK4 R. `2 o' F$ a. H1 w# G' P
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
& a; X8 \" C& e8 d4 }5 d5 U8 k1 H/ @$ j8 d+ r) |3 g
// LDAC
! i# q. n3 b4 x1 W. w( }% J: f GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK& x% }& _7 ?, z& Y! @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& G" S% ]# ]; n) ]0 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" p; _3 J6 u9 g+ Q- r( s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 N' X8 `8 e3 X- s1 d+ v1 L9 i GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 A9 T3 l& `) k: I. [7 ^
}8 c$ X! i/ Q Z; y/ D( S1 M X
' A8 U. a" l2 k0 D& ]% T- H( Q
int main(void)
) W. W+ X; m+ d8 J; K6 y! v{
6 V2 P# F+ _- j- v" M( D // 外设使能
5 Z+ }8 X/ s! P1 h& L1 g2 Q3 [" I PSCInit();
8 f9 h+ D- j3 m* M' F. d8 @9 ~! U$ d* q$ y* C, @
) Z- \1 ?/ r( v6 q' q# L* y( Y! | // 管脚复用配置
; s; f4 b( {- h0 l% P4 v GPIOBankPinMuxSet();
0 H- B. f8 n' {6 J5 W7 G for(;;)+ E1 k' T3 l- I
{
8 w" b5 C; ?# d( ~8 k SET_SCLK();//时钟正常输出/ |; ?! a4 U. i1 X( \0 L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( T1 l9 I) \/ t9 Y+ s
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 t/ `, g- O% W0 v4 A! S& H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. w1 _ k0 Y/ ~; u/ i5 Y. h. q0 L4 ~+ d- m, I& c. R, F9 H V
delay(20);
8 b/ P2 J$ W' v, w3 f$ S1 s7 A CLR_SCLK();& Y) |; ]# {% n' `( \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
) n, D- y' y. [3 M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 @3 y" E$ n& t0 M& B GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 N3 b1 f. o+ `* {
delay(20);: k3 M0 {% F, m% p
}2 B, B# Z. H5 @; V; F7 J% y' T
}. r7 L+ t; D( y
|
|