|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 z# c) D+ q" Qvoid PSCInit(void)
! h$ ?/ L# p* M% ?$ P' ]! @" u6 }{8 B) F. [* m" v$ A6 a
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);( V! m' V6 o- ?- ]: j
}
4 K- w; C+ q" q4 d2 ?# |4 Y
6 Z( ]# S. J% V' m! J" Ovoid GPIOBankPinMuxSet(void)3 i7 |& s" u- z7 t9 x6 M @
{
9 ^+ F/ k& J( B" s. k& m; Y // DRDY ------------ GPIO6[14] -- 111- u" ]: J- L+ q& @
// SPI1_CLK ------------ GPIO2[13] -- 46
6 c9 ~' K0 R0 Q3 Y+ u: H; I // SPI1_SOMI------------ GPIO2[11] -- 44
, e" Z: ~4 R6 b5 P! I // SPI1_SIMO------------ GPIO2[10] -- 43
* \3 ^ F8 ?, h4 f // SPI1_CS2 ------------ GPIO1[0] -- 17& v5 Y: L- B7 U0 U) d) ?
// SPI1_CS3 ------------ GPIO1[1] -- 18
3 |& Q# l* T+ H0 b; l1 V" x# D% e" Q/ I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 X& ~" Z9 a% _' ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 C, k. p2 X k/ j" l# F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 l8 v- N l$ B* u6 c6 T3 O5 K# N6 c; a5 C6 N; x6 d
//DRDY
9 V" a! l O+ c GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# H6 _3 I2 d+ p }3 K5 R6 a. @" ?
// CS2,CS3
8 y8 j) N* T% \& I& Y" `% b GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" s# r0 q& U5 L' X1 f
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( K! K% } G4 ~( G& ?- b //SIMO
8 D+ c2 t$ Z: M7 {: P( V GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
E2 L, k% G/ d) n$ E //SOMI
" C/ K( K, R: v7 ?5 ? GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' [ R1 |2 v$ a, p, }( B% { //CLK
6 v1 `! [$ J3 Q( X6 O7 e! `# G. S! Q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 |1 Z) h5 [* u; Z6 j/ W0 E5 x
// LDAC
% V7 |. _* T5 D# P GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
8 e8 Y0 o" J3 Y7 T0 R$ |- r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 r, u+ h$ _6 m* E& I0 ~- Q" a' n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 D" s% H: T' p' Y; ~" k& ^0 m, G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* g5 g( l3 e. n% P GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# }+ Z0 ]4 W3 L: l
}
. {9 h2 n& \- ?1 C. C! Z9 ^9 ?
4 [1 |6 B @. \2 E) |int main(void)* d6 O' s4 M p
{
8 l, m. k! ~' M* @ // 外设使能# M- W( }: u0 q( c7 a4 n
PSCInit();+ D) ^# {0 t+ u4 ? n) V3 F/ U2 o
" Y5 X* P7 ^+ e" \# ~, D0 f
# A8 f h% j" A. m
// 管脚复用配置4 \* `: }' L) t9 M" L0 D
GPIOBankPinMuxSet();5 a; `) C7 u1 \. |2 l& }6 [
for(;;)$ u {. x4 R/ W4 b3 R0 H
{' ^4 W) l. d% v& S; S" [/ e; h
SET_SCLK();//时钟正常输出( Z, M3 g, d3 k x( X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 `8 r8 G2 P; w* ^& Y. O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3% o$ z8 O' W' N. O7 e* r
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN3 u& n F! a( ~, S
) l$ y' @; j w! T2 ?: ?
delay(20);
. \1 t' c3 h8 o7 Y4 \5 ~ CLR_SCLK();3 C- o" C, y6 `( D- [( ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* O$ u- u- \ ^& W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 |. F' D+ u5 ]$ T. ~; G; L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ i5 h2 h3 _+ q
delay(20);! l( u0 ^& E5 ~9 {
}( W, g" l5 b2 B: p) D/ I& W( Z
}1 a) I: C; k/ G S$ y! k* d$ V% ~
|
|